查询规则
- 通过指向符号“->”多次连续调用方法称为:链式查询
- 当执行Db::name(‘user’)时,返回的是查询对象
- 主要是数据库对象,那么就可以一直使用指向符号进行链式查询
- find()、select()等方法会返回数组(Array)或数据集对象(Colletion)
- 而find()和select()是结果查询方法(放在最后),不是链式查询方法
更多查询
- 如果多次使用数据库查询,那么每次静态创建都会生成一个实例,造成浪费
- 可以将对象实例保存下来,然后进行反复调用
$data = Db::name ('user');
$userData = $data->where('id',1)->find();;
return json($userData);
- 当同一对象实例第二次查询后,会保留第一次查询的值
- 可以使用removerOption()方法,清理掉上一次查询保留的值
where
Db::name('user')->where('id','>',9)->select();
$data = [
'id' => 8,
'username' => 'zhh'
];
Db::name('user')->where($data)->find();
Db::name('user')->where([
['id','=',8],
['username','=','zhh']
])->select();
$map[] = ['id','=',8];
$map[] = ['username','=','zhh'];
Db::name('user')->where($map)->select();
- 字符串形式传递,使用whereRaw()支持复杂字符串格式
Db::name('user')->whereRaw('id=8 and username="zhh"')->select();
field
- 使用field()方法,可以指定要查询的字段,可以传入数组
Db::name('user')->field('id,username,pass')->select();
Db::name('user')->field(['id','username','pass'])->select();
Db::name('user')->field('id,username as user')->select();
- 使用field(true)的参数,可以显示所有字段,不是*
Db::name('user')->field(true)->select();
Db::name('user')->field('username,email')->inset($data);
- 在fieldRaw()方法里,可以直接给字段设置mysql函数
Db::name('user')->fieldRaw('id,sum(price)')->select();
- 使用withoutField()方法中可以将字段排除,可以屏蔽不想要的字段
Db::name('user')->withoutField('pass')->select();
ailas
Db::name('user')->alias('a')->select();
limit
Db::name('user')->limit(2)->select();
- limit(),可以传递两个参数,当有两个参数时,第一个参数表示从条开始,第二个参数表示显示多个条
Db::name('user')->limit(2,5)->select();
page
- page()优化limit()方法,无须计算分页条数
order
- 使用order()方法,可以指定排序方式,默认asc
Db::name('user')->order('id','desc')->select();