- select查询
- select()方法可以制定你想要的列,而不是所有列:
//设置显示的列,设置列别名
$users = \DB::table(‘创建的表名’)->select(‘username as name’, ‘email’)->get();
b. addSelect()方法,可以在你基础的查询构造器上再增加想要显示的字段:
//给已经构建好的查询添加更多字段
$base = \DB::table(‘创建的表名’)->select(‘username as name’, ‘email’);
$users = $base->addSelect(‘gender’)->get();
c. DB::raw()方法可以在select()内部实现原生表达式,否则解析错误:
//结合原生SQL实现复杂查询
$users = \DB::table(‘创建的表名’)// 第一种写法
->groupBy(‘gender’)
->select(\DB::raw(‘count() as count, gender’))
->get();
$users = \DB::table(‘创建的表名’)
->groupBy(‘gender’)
->selectRaw(‘count() as count, gender’)
->get();
d. 还可以通过havingRaw()方法实现更精准的分组筛选:
//使用havingRaw方法实现分组筛选
$users = \DB::table(‘创建的表名’)->selectRaw(‘count(*) as count, gender’)
->groupBy(‘gender’)
->havingRaw(‘count>1’)
->get();
- where查询
- where()查询,即条件查询,完整形式需要字段表达式和值三个:
//where查询完整形式
$users = \DB::table(‘创建的表名’)->where(‘id’, ‘=’, ‘20’)->get();
b. 大部分情况下,是等于用的比较多,就可以省略掉=号参数:
//where 查询完整形式
$users = \DB::table(‘创建的表名’)->where(‘id’, ‘20’)->get();
c. 当然,还有>,<,>=,<=,<>,like等操作符:
$users = \DB::table(‘创建的表名’)->where(‘id’,’>=’,’20’)->get();
$users = \DB::table(‘创建的表名’)->where(‘username’,’like’,’%张%’)->get();
d. 如果条件较多,可以用数组来分别添加条件,具体如下:
//如果条件都是等于,查看SQL语句用->toSql()替换->get()
$users = \DB::table(‘users’)->where([
‘gender’ => ‘男’,
‘id’ => 20
])->get();
//如果条件非等于
$users = \DB::table(‘users’)->where([
[‘gender’, ‘=’, ‘男’],
[‘id’, ‘>=’, ‘20’]
])->get();