-
查詢構(gòu)造器的工作原理
- 查詢請(qǐng)求通過查詢類和生成類抱环,生成sql語句發(fā)到連接類與數(shù)據(jù)庫進(jìn)行溝通壳快。
- 查詢類Query.php里面,Builder.php是生成類镇草,Connection.php鏈接類眶痰,connector文件夾下的是鏈接器
-
什么是鏈?zhǔn)讲僮鳎繛槭裁匆面準(zhǔn)讲僮鳎?br> 它是用來快速生成查詢操作的梯啤,因?yàn)榭焓奖悖子靡蛴睢K乃胁樵兎椒▉碜詑uery.php七婴。
dump(
Db::table('staff')
->where('id','=',2)
->find()
);
如果是等于可以省略
find()只會(huì)返回一條
select()可返回多條。
-
數(shù)據(jù)表的查詢條件是如何生成的察滑?
生成查詢?nèi)N方法:
表達(dá)式
數(shù)組
dump(
Db::table('staff')
->field(['name','sex','salary'])
->where([
'id'=>['<=',2],
'salary'=>['>',4500],
])
->select()
);
- 閉包(推薦)
函數(shù)中的函數(shù)打厘,方法中的方法
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],
]);
})
);
使用修改字段名
-
如何用查詢構(gòu)造器實(shí)現(xiàn)數(shù)據(jù)表的增刪改查(CURD)操作贺辰?
CURD即增刪改查
- C:Create創(chuàng)建插入
- U:Update改
- R:Read讀取查詢
- D:Delete刪除(不能使用閉包)
$res=Db::table('staff')
->insert([
'name'=>'喬凡芯',
'sex'=>0,
'salary'=>9000,
'dept'=>'開發(fā)部',
'hiredate'=>date('Y-m-d h:i:s', time()),
]);
return $res ? '成功添加了'.$res.'條記錄' : '添加失敗';
$res=Db::table('staff')
->insertAll([
['name'=>'喬繁皓','sex'=>1,'salary'=>9000,'dept'=>'開發(fā)部','hiredate'=>date('Y-m-d h:i:s', time())],
['name'=>'陳玉花','sex'=>0,'salary'=>10000,'dept'=>'設(shè)計(jì)部','hiredate'=>date('Y-m-d h:i:s', time())],
]);
return $res ? '成功添加了'.$res.'條記錄' : '添加失敗';
更新不能無where條件户盯,除非包含了主鍵
- setInc自增
- setDec自減('字段',步驟,[延時(shí)])