-
查询构造器的工作原理
- 查询请求通过查询类和生成类,生成sql语句发到连接类与数据库进行沟通。
- 查询类Query.php里面,Builder.php是生成类,Connection.php链接类,connector文件夹下的是链接器
-
什么是链式操作?为什么要用链式操作?
它是用来快速生成查询操作的,因为快,方便,易用。它的所有查询方法来自query.php。
dump(
Db::table('staff')
->where('id','=',2)
->find()
);
如果是等于可以省略
find()只会返回一条
select()可返回多条。
-
数据表的查询条件是如何生成的?
生成查询三种方法:
表达式
数组
dump(
Db::table('staff')
->field(['name','sex','salary'])
->where([
'id'=>['<=',2],
'salary'=>['>',4500],
])
->select()
);
- 闭包(推荐)
函数中的函数,方法中的方法
dump(
Db::table('staff')
->field(['name','sex','salary'])
->where(
function ($query){
$query
->where('id','<=',2)
->where('salary','>',4500);
})
->select()
);
闭包的好处在于,可以引用外部变量
$salary=4000;
dump(
Db::table('staff')
->field(['name','sex','salary'])
->where(
function ($query) use($salary){
$query
->where('id','<=',2)
->where('salary','>',$salary);
})
->select()
);
dump(
Db::select(
function ($query){
$query
->table('staff')
->field('name as 姓名,salary as 工资')
->where([
'id'=>['<=',2],
'salary'=>['>',4500],
]);
})
);
使用修改字段名
-
如何用查询构造器实现数据表的增删改查(CURD)操作?
CURD即增删改查
- C:Create创建插入
- U:Update改
- R:Read读取查询
- D:Delete删除(不能使用闭包)
$res=Db::table('staff')
->insert([
'name'=>'乔凡芯',
'sex'=>0,
'salary'=>9000,
'dept'=>'开发部',
'hiredate'=>date('Y-m-d h:i:s', time()),
]);
return $res ? '成功添加了'.$res.'条记录' : '添加失败';
$res=Db::table('staff')
->insertAll([
['name'=>'乔繁皓','sex'=>1,'salary'=>9000,'dept'=>'开发部','hiredate'=>date('Y-m-d h:i:s', time())],
['name'=>'陈玉花','sex'=>0,'salary'=>10000,'dept'=>'设计部','hiredate'=>date('Y-m-d h:i:s', time())],
]);
return $res ? '成功添加了'.$res.'条记录' : '添加失败';
更新不能无where条件,除非包含了主键
- setInc自增
- setDec自减('字段',步骤,[延时])