【thinkphp6学习过程】链式查询方法

学习要点

  1. where
  2. field
  3. alias
  4. limit
  5. page
  6. order
  7. group
  8. having
本节课我们来学习链式查询方法中的where()、field()和alias();

一、where

  1. 表达式查询,就是 where()方法的基础查询方式;
 Db::name('user')->where('id','>',70)->select();
  1. 关联数组查询,通过键值对来数组键值对匹配的查询方式;
$user = Db::name('user')->where([
	'gender' => '男',
	'price'  => 100 			
	])->select();
  1. 索引数组查询,通过数组里的数组拼装方式来查询;
$user = Db::name('user')->where([
	['gender' => '男'],
	['price'  => '100']	
	])->select();
  1. 将复杂的数组组装后,通过变量传递,将增加可读性;
$map[] = ['gender','=','男'];
$map[] = ['price','in', [60, 708]];
$user = Db::name('user')->where($map)->select();
  1. 字符串形式传递,简单粗暴的查询方式,whereRaw()支持复杂字符串格式;
Db::name('user')->whereRaw( 'gender="男" AND price IN (60, 70, 80)')->select();
  1. 如果 SOL 查询采用了预处理模式,比如 id=:id,也能够支持;
Db::name('user')->whereRaw('id=:id'['id'=>19])->select();

二、field

  1. 使用 field()方法,可以指定要查询的字段;
Db::name('user')->field('id,username,email')->select();
Db::name('user')->field(['id','username','email'])->select();
  1. 使用 field()方法,给指定的字段设置别名;
Db::table('user')->field('id,nickname as name')->select();
Db::table('user')->field(['id','nickname'=>'name'])->select();
  1. 在 fieldRaw()方法里,可以直接给字段设置 MySOL 函数:
Db::name('user')->fieldRaw('id,SUM(price)')->select();
  1. 使用 field(true)的布尔参数,可以显式的查询获取所有字段,而不是*;
Db::name('user')->field(true)->select();
  1. 使用 withoutField()方法中字段排除,可以屏蔽掉想要不显示的字段;
Db::name('user')->withoutField('details')->select();
  1. 使用 field()方法在新增时,验证字段的合法性;
     $data=[
            'name' => '礼拜',
            'country' => '测试名字'
        ];
Db::name('user')->field('username,email,details')->insert($data);

三、alias

  1. 使用alias()方法,给数据库起一个别名;
 Db::name('user')->alias('a')->select();  

alias的作用是方便join操作方法 比如连接user1表名

Db::table('user')
->alias('a')
->join('user1 b','b.user_id= a.id')
->select();

四、limit

  1. 使用limit()方法,限制获取输出数据的个数;
Db:name('user')->limit(5)=>select();
  1. 分页模式,即传递两个参数,比如从第3条开始显示5条limit(2,5);
Db:name('user')->limit(2,5)->select();
  1. 实现分页,需要严格计算每页显示的条数,然后从第几条开始;
//第一页
Db::name('user')->limit(0,5)->select();
//第二页
Db::name('user')->limit(5,5)->select();

五、page

  1. page()分页方法,优化了limit()方法,无须计算分页条数;
//第一页
Db::name('user')->page(1,5)->select();
//第二页
Db::name('user')->page(2,5)->select();

六、order

  1. 使用order()方法,可以指定排序方式,没有指定第二参数,默认asc;
Db::name('uesr')->order('id','desc')->select();
  1. 支持数组的方式,对多个字段进行排序;
Db::name('user')->order(['create_time'=>'desc','price'=>'asc'])->select();
  1. 使用orderRaw()方法,支持排序的时候指定MySQL函数;
 Db::name('user')->orderRaw('FIELD(username,"东海金城武") DESC')->select();

七、group

  1. 使用group()方法,给性别不同的人进行price字段的总和统计;
Db::name('user')->filedRaw('gender,SUM(price)')->group('gender')->select();
  1. 也可以进行多字段分组统计;
Db::name('user')->filedRaw('gender,SUM(price)')->group('gender,password')->select();

八、having

  1. 使用group()分组之后,再使用having()进行筛选;
$result=Db::name('user')->filedRaw('gender,SUM(price)')->group('gender')->having('SUM(price)>600')->select();

猜你喜欢

转载自blog.csdn.net/qzmlyshao/article/details/130817778