- 链式操作是什么?
链式操作是一系列的操作组合起来形成一行代码,类似一个链条而得名。优点很明显,可以减少开发的工作量。
二.链式操作的示例
$res = db('user')
->alias('u')//设置别名
->join('user_detail b','a.id=b.uid','left')//关联user_detail表,设置别名b,链接方式left
->where('u.id','>',0)//查询条件
->whereor('b.id','>',0)//或查询
->field('u.username','b.uid')//设置查询的字段
->limit(1,10)//查询第一页,10条数据
->order('u.id desc')//排序
->group('u.id')//分组
->having("count(u.id)>0")//分组后筛选
->cache(true)//查询缓存
->fetchSql(true)//返回sql
->select();
var_dump($res);
三.链式其它操作
- 、添加时的关闭检测字段
db('user')->strict(false)->insert(['username'=>1]);
2)、总是缓存,cacheAlways会把空数据也给缓存上
db('user')->where('id',100)->cacheAlways('key',60,'user')->find();
3)、comment生成带注释的sql
$res = db('user')->where('id','=',5)->cacheAlways('key',60,'user')->comment('我会把空缓存上')->fetchSql(true)->find();
4)、分页方法page(其实和limit没多大区别(页数-1)*每页条数)
5)、distinct去重,与group类似
$res = db('user')->distinct(true)->field('username')->select()->toarray();
var_dump($res);
$res = db('user')->group('username')->field('username')->select()->toarray();
var_dump($res);
、force强制索引
7)、failException空数据报错
$res = db('user')->where('id','>',100)->failException()->select()->toarray();
var_dump($res);
四.Group报错
$res = db('user')->group('username')->select()->toarray();//报错
$res = db('user')->group('username')->field('username')->select()->toarray();//正常,意思是以什么分组就只能查询这一个字段,这个是数据库的设置问题,取消sql_mode的ONLY_FULL_GROUP_BY即可