🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 1. 单条数据查询 find() 默认返回一维数组: $m = D('user'); $where['id'] = 1; $user = $m->where($where)->find(); 查询某一字段的值: $m = D('user'); $where['id'] = 1; $username = $m->where($where)->find('username'); //返回 username 字段的值 (字符串) ## 2. 多条数据查询: 默认返回二维数组 $m = D('user'); $where['id >'] = 1; $user = $m->where($where)->select(); 查询某一字段的值: $m = D('user'); $where['id >'] = 1; $username = $m->where($where)->select('username'); //返回 username 字段的值 (一维数组) ## 3. 指定返回字段 field($field) $field:数组或字符串 $field 为索引数组时返回对应数组值的字段 $field 为关联数组时返回对应数组键名的字段,字段名被转为数组键值(指定字段别名) $field 为字符串时将保持原样,框架不做解析 $m = D('user'); $where['id >'] = 1; $field = ['id','username','age']; //指定只返回 id,username,age 字段 $user = $m->field($field)->where($where)->select(); **指定所返回字段的别名:** $m = D('user'); $where['id >'] = 1; $field = ['id','username'=>'name','age']; //指定 username 字段返回的别名是 name $user = $m->field($field)->where($where)->select(); **返回除了某字段之外的所有字段:** $m = D('user'); $field = ['EXCEPT'=>'username,age']; //使用 EXCEPT 排除字段 $field = ['EXCEPT'=>'username,age','code'=>'usercode']; //排除 `username`和`age` 字段 并且将`code`字段转成 usercode $user = $m->field($field)->where($where)->select(); **使用函数** $m = D('user'); $where['id >'] = 1; $field = ['SUM(point)'=>'totalpoint']; //point 字段求和并指定返回别名是 totalpoint $user = $m->field($field)->where($where)->select(); ## 4. 设置返回数据条数 $m = D('user'); $user = $m->limit(10)->select(); $user = $m->limit(6,10)->select(); ## 5. 设置排序方式 $m = D('user'); $user = $m->order('id')->select(); //按 `id` 字段排序 $user = $m->order('id DESC')->select(); //按 `id` 字段降序排序 ## 6. 统计查询 $m = D('user'); $user = $m->where($where)->count(); //返回符合条件的数据总数 $user = $m->sum('point'); //point 字段求和 $user = $m->max('point'); //point 字段的最大值 $user = $m->min('point'); //point 字段的最小值 $user = $m->avg('point'); //point 字段的平均值 ## 7. 数据分组 $user = $m->group('username')->select(); //按 username 字段分组 ## 8. 聚合条件 **having 条件使用方法同 where 条件,详情请参照 where 条件** $having = ['point >'=>100]; $user = $m->group('username')->having($having)->select(); $having = ['point >'=>100,'status'=>1]; $user = $m->group('username')->having($having)->select(); ## 9. 关联查询 默认是 RIGHT JOIN: $m = D('user'); $where['a.id'] = 1; $join = 'group b ON a.groupid=b.groupid'; //关联 group 表查询 $list = $m->alias('a')->join($join)->where($where)->select(); 指定 JOIN 类型: $join = 'LEFT JOIN group b ON a.groupid=b.groupid'; //LEFT 关联 多个 JOIN 条件: $m = D('user'); $where['a.id'] = 1; $join[] = 'LEFT JOIN group b ON a.groupid=b.groupid'; $join[] = 'LEFT JOIN cart c ON c.uid=a.id'; /*...更多JOIN;*/ $list = $m->alias('a')->join($join)->where($where)->select(); ## 10. 事务处理 begin() 开始事务 commit() 提交事务 rollback() 回滚事务 $m = D('user'); try{ $m->begin(); //开始事务处理 //....数据操作 if(!$m->commit()) throw new \Exception("提交失败!"); //提交事务 }catch(\Exception $e){//捕获错误信息 $m->rollback(); //回滚 return $e->getMessage(); } ## 11. 行锁 find() 和 select() 操作支持锁定数据行; 方法是 传入第二个参数为 true 该功能只能在事务处理中有效(也就是必须在 begin() 和 commit() 方法之间才会有效) $m = D('user'); $where['id'] = 1; try{ $m->begin(); $user = $m->where($where)->find(null,true); //锁定该行直到操作结束 if(!$user) throw new \Exception("用户数据不存在"); $result = $m->where($where)->setField('level',1); if(!$result) throw new \Exception("设置用户等级失败"); if(!$m->commit()) throw new \Exception("提交失败!"); }catch(\Exception $e){ $m->rollback(); return $e->getMessage(); }