1 使用預設連結與指定連結
資料庫預設連線操作:$ result = DB::select(‘select from table’);
如果連線方式需要使用connection這個函式定義的連線,則
$users = DB::connection('config')->select('select from t');
2 原生的curd
select
按順序的傳遞值方式
$result = DB::connection('test')->select('select from table where id = ?',[3]);
按鍵值傳遞值方式
DB::select('select from users where id = :id', ['id' => 1]);
注意: 預處理操作函式都具備2個引數位置(sql語句 、佔位符值)
佔位符:
1、? 按順序傳遞值
2、:Name 按名稱傳遞值。傳參都是陣列形式
insert
傳值方式與select一樣
DB::connection('test')->select('insert into table ('count' , 'name') value(?,?),['3','8888888888']');
update 、delete同上
DB::update('update users set votes = 100 where name = ?', ['John']);
DB::delete('delete from users');
3 事務(使用事務必須把表的資料引擎設定為innodb,在設計表->選項裡面設定)
(1)自動
主要是使用transaction這個方法
DB::transaction(function (){
//修改
$num = DB::update("update goods set goods_name = 'Macos' where id = :id",['id'=>1]);
//刪除
$num1 = DB::delete('delete from goods where id = 7');
var_dump($num,$num1);
try{
if ($num > 0 && $num1 > 0) {
return '事務操作成功';
}else {
throw new \Exception('事務操作失敗');
}
}catch (Exception $e){
return $e->getMessage();
}
});
注意:務會自動提交。回滾觸發條件是丟擲異常
(2)手動事務
DB::beginTransaction();
//修改
$num = DB::update("update goods set goods_name = 'Macos' where id = :id",['id'=>1]);
//刪除
$num1 = DB::delete('delete from goods where id = 7');
if ($num > 0 && $num1 > 0) {
echo '事務操作成功';
//事務提交
DB::commit();
}else {
//事務回滾
echo '事務操作失敗';
DB::rollBack();
}