## ThinkPHP6.0 鏈式SQL語句 #### 查詢單個數據 ```php $user = Db::query('select * from `user`'); $user=Db::table('user')->where('UserID',1001)->find();//查詢結果為空 返回 ...
ThinkPHP6.0 鏈式SQL語句
查詢單個數據
$user = Db::query('select * from `user`');
$user=Db::table('user')->where('UserID',1001)->find();//查詢結果為空 返回 null
$user=Db::table('user')->where('UserID',1001)->findOrEmpty();//查詢結果為空 返回 空數組
查詢結果集(查詢結果返回多條數據的意思)
$user=Db::table('user')->where('UserID',1001)->select();
$user=Db::table('user')->where('UserID', 1001)->select()->toArray();
查詢一個欄位
$user=Db::table('user')->where('UserID',1002)->value('UserName');//只能返回一條數據
查詢一列
$user=Db::table('user')->where('Password',123456)->column('UserName');//可以返回多條數據
添加數據
$data=['UserID'=>'1005','UserName'=>'Season','Password'=>'123456'];
Db::name('user')->insert($data);
修改數據
DB::table('user')->where('UserID',1005)->update(['Password'=>123]);
刪除數據
根據主鍵刪除
Db::table('user')->delete([1002,1003]);
條件刪除
Db::table('user')->where('Password',123)->delete();
查詢數據
格式 where('欄位名','查詢表達式','查詢條件');
$user=Db::table('user')->where("UserID","=",1001)->select();
模糊查詢
$user=Db::table('user')->where('UserName','like','s%')->select();
區間查詢
$user=Db::table('user')->where('UserID','between','1001,1003')->select();
IN查詢
$user=Db::table('user')->where('UserID','in',[1001,1003])->select();
Not Null
$user=Db::table('user')->where('Password','not null')->select();
Null
$user=Db::table('user')->where('Password',null)->select();
鏈式操作示例
$user=Db::table('user')->where('Password',123456)->order('UserName')->select();
field操作(輸出選擇的欄位名的數據)
$user=Db::table('user')->field('UserID,UserName')->select();
鏈式alias操作,設置表的名稱(為了方便後面內容的書寫)
$user=Db::table('user')->alias('a')->where('a.UserID',1001)->select();
limit 操作
$user=Db::table('user')->limit(2)->select();
page操作
$user=Db::table('user')->page(2,5)->select();
order操作,預設asc
$user=Db::table('user')->order('UserID')->select();
$user=Db::table('user')->order('UserID','desc')->select();
group 操作
$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->select();
having操作
$user=Db::table('user')->alias('u')->field('u.Status,SUM(u.Price)')->group('u.Status')->having('u.Status>0')->select();
join操作
INNER JOIN: 等同於 JOIN(預設的JOIN類型),如果表中有至少一個匹配,則返回行
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個表中存在匹配,就返回行
Transaction(自動):當函數內的sql語句出現錯誤了,則函數內的sql語句都不執行
Db::Transaction(function (){
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
});
startTrans(手動):當sql語句出現錯誤了,則sql語句都不執行
Db::startTrans();
try {
Db::name('user')->where('UserID',1001)->save(['Price'=>Db::raw('Price-3')]);
Db::name('user')->where('UserID',1002)->save(['Price'=>Db::raw('Price+3')]);
Db::commit();//提交事務
}catch (\Exception $e){
echo '執行SQL失敗,開始回滾數據';
Db::rollback();
}
獲取器:$value 所有欄位名是“UserName”的數據 $data所有數據
$user=Db::name('user')->withAttr('UserName',function ($value,$data){
var_dump($value);
var_dump($data);
})->select();;