Blogger Information
Blog 60
fans 5
comment 3
visits 65302
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Laravel的查询构造器和聚合查询
longlong
Original
2196 people have browsed it

一、构造器的查询

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();
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:返回的结果类型一定要注意
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post