12.链式方法

一.where
1. 表达式查询,就是 where()方法的基础查询方式;
    Db::name('user')->where('id', '>', 70)->select();
2. 关联数组查询,通过键值对来数组键值对匹配的查询方式;
    $result = Db::name('user')->where([
    'gender' => '男',
    'price' => 100  或者 'price' => [60,70,80]])
    ->select();
3. 索引数组查询,通过数组里的数组拼装方式来查询;
    $result = Db::name('user')->where([
    ['gender', '=', '男'],
    ['price', '=', '100']
    ])->select();
4. 将复杂的数组组装后,通过变量传递,将增加可读性;
    $map[] = ['gender', '=', '男'];
    $map[] = ['price', 'in', [60, 70, 80]];
    $result = Db::name('user')->where($map)->select();
5. 字符串形式传递,简单粗暴的查询方式;
    Db::name('user')->where('gender="男" AND price IN (60, 70, 80)')->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. 在 field()方法里,可以直接给字段设置 MySQL 函数;
    Db::name('user')->field('id,SUM(price)')->select();
4. 对于更加复杂的 MySQL 函数,必须使用字段数组形式;
    Db::name('user')->field(['id', 'LEFT(email, 5)'=>'leftemail'
    ,])->select();
5. 使用 field(true)的布尔参数,可以显式的查询获取所有字段,而不是*;
    Db::name('user')->field(true)->select();
6. 使用 field()方法中字段排除,可以屏蔽掉想要不显示的字段;
    Db::name('user')->field('details,email', true)->select();
    Db::name('user')->field(['details,email'], true)->select();
7. 使用 field()方法在新增时,验证字段的合法性;
    Db::name('user')->field('username, email, details')->insert($data);

三.alias
1. 使用 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
1. 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();
七.group
1. 使用 group()方法,给性别不同的人进行 price 字段的总和统计;
Db::name('user')->field('gender, sum(price)')->group('gender')->select();
2. 也可以进行多字段分组统计;
Db::name('user')->field('gender, sum(price)')
->group('gender,password')->select();
八.having
1. 使用 group()分组之后,再使用 having()进行筛选;
$result = Db::name('user')
->field('gender, sum(price)')
->group('gender')
->having('sum(price)>600')
->select();