博客列表 >Laravel的查询构造器和聚合查询

Laravel的查询构造器和聚合查询

longlong
longlong原创
2020年09月17日 10:46:422165浏览

一、构造器的查询

1. get()方法

获取到满足查询条件的所有数据,返回的是一个对象集合

  1. $data = DB::table('admin')->limit(2)->get();
  2. echo '<pre>';
  3. print_r($data);


方法中传入参数,可以指定获取哪些字段

  1. $data = DB::table('admin')->limit(2)->get(['username','email']);
  2. echo '<pre>';
  3. print_r($data);


2. first()方法

获取到满足查询条件的第一条数据(也因为只返回一条数据,所以返回的是一个对象,而不是对象集合)

  1. $data = DB::table('admin')->first();
  2. echo '<pre>';
  3. print_r($data);


传入参数,也能指定返回某些字段

  1. // 当只有一个字段时,可以省略中括号
  2. $data = DB::table('admin')->first('id');
  3. 当不只一个字段时,必须以数组的方式指定字段
  4. $data = DB::table('admin')->first(['id','username']);
  5. echo '<pre>';
  6. print_r($data);

当然可以结合 where 等语句来书写查询条件

  1. $data = DB::table('admin')->where('uid',1)->first(['id','username']);
  2. echo '<pre>';
  3. print_r($data);


3. value()方法

获取某个字段的值,此方法也只会返回满足条件的第一条记录,不同之处在于不会返回对象,返回的直接是字段的值

  1. $data = DB::table('users')->where('uid',1)->value('username');
  2. echo '<pre>';
  3. print_r($data);


4. find()方法

根据指定的 id 返回一条数据 ,返回的当然是一个对象

  1. $data = DB::table('admin')->find(2);
  2. echo '<pre>';
  3. print_r($data);


传入第二个参数,也可以指定返回字段

  1. $data = DB::table('admin')->find(2,['username','email']);
  2. echo '<pre>';
  3. print_r($data);


5. pluck()方法

返回数据表中单列值的集合对象

当只有一个参数时,对象中 items 属性对应的数组是一个索引数组,从0开始

  1. $data = DB::table('admin')->pluck('username');
  2. echo '<pre>';
  3. print_r($data);


当传入第二个参数时,可以将数组转为关联数组,可使用数据表中的另一字段来表示数组的键名

  1. $data = DB::table('admin')->pluck('username','email');
  2. echo '<pre>';
  3. print_r($data);


当然,在实际开发中,多会使用主键id来表示键名

  1. $data = DB::table('users')->pluck('username','id');
  2. echo '<pre>';
  3. print_r($data);


二、聚合查询

1. max()方法

求字段的最大值

  1. $data = DB::table('admin')->max('age');
  2. var_dump($data);


2. min()方法

求字段的最小值

  1. $data = DB::table('admin')->min('age');
  2. var_dump($data);

3. avg()方法

求字段的平均值,返回的值会转为字符串类型

  1. $data = DB::table('admin')->avg('uid');
  2. var_dump($data);


4. sum()方法

求字段的值的总和,返回的值也会转为字符串类型

  1. $data = DB::table('admin')->sum('age');
  2. var_dump($data);


5. count()方法

计算记录总数量,返回的是整型int

实际上count() 方法默认是计算的所有,即 count('*'),你也可以指定其他字段,比如:count('id')count('age'),但是效果都是一样的,执行效率上讲,也是差不多的,所以直接使用count()即可

  1. $data = DB::table('admin')->count();

计算符合某个查询条件的记录总数量:

  1. $data = DB::table('admin')->where('uid',1)->count();

三、构造器的增删改

1. insert()

插入数据到数据表,注意是使用数组的方式,如果是多条插入,使用二维数组


插入一条记录:

  1. public function insert(){
  2. $data = DB::table('admin')->insert([
  3. 'username'=>'小明',
  4. 'password'=>md5(35453),
  5. 'age'=>23,
  6. 'email'=>'xiaoming@qq.com',
  7. ]);
  8. var_dump($data);
  9. }


插入多条记录:

  1. public function insert(){
  2. $data = [
  3. ['username'=>'小黄','password'=>md5('drts'),'age'=>21,'email'=>'xiaohuang@qq.com'],
  4. ['username'=>'小刘','password'=>md5('fghj'),'age'=>25,'email'=>'xiaoliu@qq.com'],
  5. ['username'=>'小张','password'=>md5('gfhut'),'age'=>32,'email'=>'xiaozhang@qq.com'],
  6. ];
  7. $res = DB::table('admin')->insert($data);
  8. var_dump($res);
  9. }


2. update()

更新数据,一定要指定更新条件


更新某一列的值:

  1. public function update(){
  2. $data = DB::table('admin')->where('isupdate',null)->update(['isupdate'=>'yes']);
  3. var_dump($data);
  4. }


更新指定数据的字段值:

  1. public function update(){
  2. $data = DB::table('admin')->where('id',12)->update([
  3. 'username'=>'我换名字了',
  4. 'email'=>'换邮箱了',
  5. ]);
  6. var_dump($data);
  7. }


3. delete()

删除数据,一定要指定删除条件

delete()函数也可以传参,参数是id,所以当我们要根据id删除时,可以不使用where来增加查询条件,但是要根据指定的其他字段删除时,就需要where


根据id删除数据:

  1. public function delete(){
  2. $data = DB::table('admin')->delete(15);
  3. var_dump($data);
  4. }

根据其他字段删除数据:

  1. $data = DB::table('admin')->where('username','小黄')->delete();

删除多条数据:

  1. $data = DB::table('admin')->where('id','>=','12')->delete();
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议