# 查询构造器 [TOC] #### 从数据表中取得所有的数据列 ``` Db::table('user')->get(); ``` #### 取得指定的字段 ``` Db::table('user')->get(['username','age']); ``` #### 从数据表中取得单一数据列 ``` Db::table('user')->where('username','向军')->first(); //取出指定主键的值 Db::table('user')->first(2); ``` #### 从数据表中取得单一数据列的单一字段 ``` Db::table('user')->where('username', '向军')->pluck('username'); //返回第一条记录的 username 字段值 ``` #### 取得单一字段值的列表 ``` Db::table('user')->lists('username'); //满足条件记录的所有username字段 [ [0] => admin [1] => hdxj ] ``` #### 返回一维数组,第一个字段做为键名使用,第 2 个字段做为键值 ``` Db::table('user')->lists('id,username'); //id 字段做为键名使用 [ [1] => admin [2] => hdxj ] ``` #### 多个字段返回二维数组,第一个字段值做为键名使用,其余字段做为键值 ``` Db::table('user')->lists('id,username,age'); //返回值如下 [ [1] => [ [id] => 1 [username] => admin [age] => 22 ] [2] => [ [id] => 2 [username] => hdxj [age] => 67 ] ] ``` #### like模糊查询 第三个参数为null时,查询忽略 ``` Db::table( 'rule' )->where( 'name','like', "%后盾人%" )->get() ``` #### 指定查询结果字段 ``` Db::table('user')->field('username AS name,age')->get(); 或 Db::table('user')->field(['username','age'])->get(); ``` #### 根据某个字段查询 ``` Db::table('user')->getByName("hdphp"); //返回一条记录 ``` #### 增加查询子句到现有的查询中 ``` $db = Db::table('user')->field('username AS name','age','id'); $db->where('id','>',2)->get(); ``` #### 使用 where 及运算符 第二个参数为null时,查询忽略 ``` Db::table('user')->where('id','>',1)->get(); Db::table('user')->where('id','>',1)->where('id','<',10)->get(); ``` #### where以数组形式传参 ``` $where=[ ['id','>',3], ['status',0] ]; Db::table('user')->where($where)->get(); ``` #### whereNotEmpty内容为空时不设置 当查询参数为空时忽略本次条件设置,以下代码的where条件不会添加到SQL中。 ``` Db::table('user')->whereNotEmpty('username','')->get(); ``` #### 使用andwhere ``` Db::table('user')->where('id','>',1)->andwhere('id','<',10)->get(); ``` #### 使用orwhere ``` Db::table('user')->where('id','>',1)->orwhere('id','<',10)->get(); ``` #### 使用 logic 条件连接符 ``` Db::table('user')->where('id','>',1)->logic('or')->where('id','<',22)->get(); ``` #### 预准备whereRaw ``` Db::table('user')->whereRaw('age > ? and username =?', [1,'admin'])->get(); ``` #### 使用 whereBetween ``` Db::table('user')->whereBetween('id',[10,30])->get(); ``` #### 使用 WhereNotBetween ``` Db::table('user')->whereNotBetween('id',[10,30])->get(); ``` #### 使用 WhereIn ``` Db::table('user')->whereIn('id',[2,3,9])->get(); ``` #### 使用 WhereNotIn ``` Db::table('user')->whereNotIn('id',[3,5,6])->get(); ``` #### 使用 WhereNull ``` Db::table('user')->whereNull('username')->get(); ``` #### 使用 WhereNotNull ``` Db::table('user')->whereNotNull('id')->get(); ``` #### 指定条件关系 ``` Db::table('user')->where('id','>',1)->logic('AND')->whereBetween('id',[1,10])->get(); ``` #### 排序(Order By) ``` Db::table('user')->orderBy('id','DESC')->get(); Db::table('user')->orderBy('id','DESC')->orderBy('rank','ASC')->get(); //多个排序条件 ``` #### 分组GROUP BY ``` Db::table('user')->groupBy('age')->get(); ``` #### 分组筛选HAVING ``` Db::table('user')->groupBy('age')->having('count(sex)','>',2)->get(); ``` #### 取部分数据LIMIT ``` Db::table('user')->limit(2)->get(); Db::table('user')->limit(2,5)->get(); ``` ## 聚合 #### max ~~~ Db::table("user")->max('id'); ~~~ #### min ~~~ Db::table("user")->min('id'); ~~~ #### avg ~~~ Db::table("user")->avg('id'); ~~~ #### sum ~~~ Db::table("user")->sum('id'); ~~~ ## JOIN多表关联 #### 多表关联INNER JOIN ``` Db::table('user') ->join('class','user.cid','=','class.cid') ->join('contacts','user.id','=','contacts.uid') ->get() ``` #### 多表关联LEFT JOIN ``` Db::table('user')->leftJoin('class','user.cid','=','class.cid')->get(); ``` #### 多表关联RIGHT JOIN ``` Db::table('user')->rightJoin('class','user.cid','=','class.cid')->get(); ```