企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## 查询构造器 现在主流框架的数据库都包含链式操作方法,不过高手其实还是比较喜欢手写sql的,并不依赖查询类,所以要养成尽量手写sql的习惯。 一般情况下只要最终没有获取到数据,一般函数的返回值都是`$this` [TOC] ### where条件相关 #### where条件 where条件最多可以接受4个参数 如果参数是一个,表示是一个完整的条件语句,不会进行预处理 例如: ~~~ Db::table('news')->where('id=1'); ~~~ 如果第一个参数一个数组则会循环调用where 例如: 多个where条件 ~~~ Db::table('news')->where([['id', 1], ['look_time', 2]]); ~~~ 如果参数是二个,第一个表示字段,第二个表示参数,会进行预处理 ~~~ Db::table('news')->where('id', 1); ~~~ 如果参数是三个,第一个表示字段,第二个表示逻辑`= > <`,第三个表示参数,会进行预处理 ~~~ Db::table('news')->where('id', '=', 1); ~~~ 如果参数是四个,第一个表示字段,第二个表示逻辑`= > <`,第三个表示参数,第四个表示逻辑`or and`多个where条件的逻辑 ~~~ Db::table('news')->where('id', '=', 1, 'and'); ~~~ #### whereIn ~~~ /** * where In in (1,2,3) * @param [type] $field [字段] * @param array $params [参数] * @param string $logic [与其它条件的逻辑 AND|OR] * @return [type] [description] */ public function whereIn($field, array $params, $logic = 'AND') Db::table('news')->whereIn('id',[1,2,3,4]); ~~~ #### whereNotIn ~~~ /** * where Not In * @param [type] $field [字段] * @param [type] $params [参数] * @param string $logic [与其它条件的逻辑] * @return [type] [description] */ public function whereNotIn($field, array $params, $logic = 'AND') Db::table('news')->whereNotIn('id',[1,2,3,4]); ~~~ #### whereBetween ~~~ /** * where id between * @param [type] $field [字段] * @param array $params [参数] * @param string $logic [与其它条件的逻辑] * @return [type] [description] */ public function whereBetween($field, array $params, $logic = 'AND') Db::table('news')->whereBetween('look_time', [10, 20]); ~~~ #### whereNotBetween ~~~ /** * where NotBetween * @param [type] $field [字段] * @param array $params [参数] * @param string $logic [与其它条件的逻辑] * @return [type] [description] */ public function whereNotBetween($field, array $params, $logic = 'AND') Db::table('news')->whereNotBetween('look_time', [10, 20]); ~~~ #### whereNull ~~~ /** * where null * @param [type] $field [字段] * @param string $logic [与其它条件的逻辑] * @return [type] [description] */ public function whereNull($field, $logic = 'AND') Db::table('news')->whereNull('description'); ~~~ #### whereNotNull ~~~ /** * where not null * @param [type] $field [字段] * @param string $logic [与其它条件的逻辑] * @return [type] [description] */ public function whereNotNull($field, $logic = 'AND') Db::table('news')->whereNotNull('description'); ~~~ ### 分组group ~~~ /** * 分组 * @param [type] $field [按照那个字段进行分组] * @return [type] [description] */ public function group($field) Db::table('news')->group('look_time'); ~~~ ### 排序 ~~~ /** * 排序 * @param [type] $field [排序字段] * @param [type] $type [排序方式 asc desc] * @return [type] [description] */ public function order($field, $type) Db::table('user')->whereIn('gid',[1,2,3,4,5])->order('login_time', 'asc'); ~~~ ### having查询后筛选 ~~~ /** * 过滤 * @param [type] $field [字段] * @param array $params [参数] * @return [type] [description] */ public function having($field, array $params = []) Db::table('user')->whereIn('gid',[1,2,3,4,5])->group('login_time')->having('login_time>?', [3]); ~~~ ### limit获取条数 ~~~ /** * 获取条数 limit * @param [type] $limit [位置] * @return [type] [获取条数] */ public function limit($start, $number = '') Db::table('user')->whereIn('gid',[1,2,3,4,5])->group('login_time')->having('login_time>?', [3])->limit(2,5); ~~~ ### 强制使用索引 ~~~ /** * 强制使用索引 * @param [type] $index [索引名称] * @return [type] [description] */ public function force($index) ~~~ ### 事务锁 ~~~ /** * 事务锁 * @return [type] [description] */ public function lock() Db::table('news')->lock() ~~~ ### union查询 ~~~ /** * [union 查询] * @param [type] $sql [sql语句] * @param boolean $all [是否返回所以结果] * @return [type] [description] */ public function union($sql, $all = false) ~~~ ### 大数据分批处理 ~~~ /** * 查询分批 * @param [type] $limit [每次处理个数] * @param [type] $func [处理方法闭包或者函数] * @return [type] [description] */ public function chunk($limit = 100, $func) ~~~ ### 游标处理 ~~~ /** * 游标 yield 生成器查询 * @return [type] [description] */ public function cursor() 可以进行循环 ~~~ ### 获得所有查询sql ~~~ Db::getQuerySql(); ~~~ ### 表别名 ~~~ Db::table('news')->alias('n'); ~~~ ### 设置获取字段 ~~~ /** * 获取字段 * @param [type] $field [字段] * @return [type] [description] */ public function field($field) Db::table('news')->alias('n')->field('nid,title,description')->where('look_time>3)->select(); ~~~ ### distinct ~~~ public function distinct($s = true) ~~~ ### 设置数据 ~~~ /** * 设置数据 * @param array $data [description] * @return [type] [description] */ public function data(array $data) ~~~