thinkphp6 where条件的一些查询方法

where
1. 表达式查询,就是  where()方法的基础查询方式;

Db::name('user')->where('id', '>', 70)->select();
2. 可以通过关联数组和索引数组作为参数来进行查询;

$data = ['gender'  => '男',
         'price'   => 100];
$data = ['gender', '=', '男',
         'price',   '=', 100];
$user = Db::name('user')->where($data)->select();
3. 将复杂的数组组装后,通过变量传递,将增加可读性;

$map[] = ['gender', '=', '男'];
$map[] = ['price', 'in', [60, 70, 80]];
$user = Db::name('user')->where($map)->select();
4.字符串形式传递,简单粗暴的查询方式,whereRaw()支持复杂字符串格式;

Db::name('user')->whereRaw('gender="男" AND price IN (60, 70, 80)')->select();
5. 如果 SQL查询采用了预处理模式,比如 id=:id_para,也能够支持;

$data = Db::name('user')->whereRaw('id=:id_para', ['id_para'=>19])->select();
field
1. 使用  field()方法,可以指定要查询的字段;

Db::name('user')->field('id, username, email')->select();
Db::name('user')->field(['id', 'username', 'email'])->select();
2. 使用  field()方法,给指定的字段设置别名;

Db::name('user')->field('id,username as name')->select();
Db::name('user')->field(['id', 'username'=>'name'])->select();
3. 在  fieldRaw()方法里,可以直接给字段设置  MySQL函数;

Db::name('user')->fieldRaw('id,SUM(price)')->select();
4. 使用  field(true)的布尔参数,可以显式的查询获取所有字段,而不是*;

Db::name('user')->field(true)->select();
5. 使用  withoutField()方法中字段排除,可以屏蔽掉想要不显示的字段;

Db::name('user')->withoutField('details')->select();
6. 使用  field()方法在新增时,验证字段的合法性;

Db::name('user')->field('username, email, details')->insert($data);
alias
        使用  alias()方法,给数据库起一个别名;

Db::name('user')->alias('a')->select();
limit
1. 使用  limit()方法,限制获取输出数据的个数;

Db::name('user')->limit(5)->select();
2. 分页模式,即传递两个参数,比如从第  3条开始显示  5条  limit(2,5);

Db::name('user')->limit(2, 5)->select();
3. 实现分页,需要严格计算每页显示的条数,然后从第几条开始;

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

//第一页
Db::name('user')->page(1, 5)->select();
 
//第二页
Db::name('user')->page(2, 5)->select();
order
1. 使用  order()方法,可以指定排序方式,没有指定第二参数,默认  asc;

Db::name('user')->order('id', 'desc')->select();
2. 支持数组的方式,对多个字段进行排序;

Db::name('user')->order(['create_time'=>'desc', 'price'=>'asc'])->select();
3. 使用  orderRaw()方法,支持排序的时候指定  MySQL函数;

Db::name('user')->orderRaw('FIELD(username,"樱桃小丸子") DESC')->select();
group
1. 使用  group()方法,给性别不同的人进行  price字段的总和统计;

Db::name('user')->fieldRaw('gender, SUM(price)')
                ->group('gender')->select();
2. 也可以进行多字段分组统计;

Db::name('user')->fieldRaw('gender, SUM(price)')
                ->group('gender,password')->select();
having
使用  group()分组之后,再使用  having()进行筛选;

$result = Db::name('user')
        ->fieldRaw('gender, SUM(price)') 
        ->group('gender')
        ->having('SUM(price)>600') 
        ->select();