標籤:ber let ken laravel org 應用程式 nbsp code 記錄
資料庫交易處理#
你可以使用 transaction
方法,去執行一組資料庫交易處理的操作:
DB::transaction(function(){ DB::table(‘users‘)->update([‘votes‘ => 1]); DB::table(‘posts‘)->delete();});
注意: 在 transaction
閉包若拋出任何異常會導致事務自動復原。
有時候你可能需要自己開始一個事務:
DB::beginTransaction();
你可以通過 rollback
的方法復原事務:
DB::rollback();
最後,你可以通過 commit
的方法提交事務:
DB::commit();
擷取串連#
若要使用多個串連,可以通過 DB::connection
方法取用:
$users = DB::connection(‘foo‘)->select(...);
你也可以取用原始底層的 PDO 執行個體:
$pdo = DB::connection()->getPdo();
有時候你可能需要重新串連到特定的資料庫:
DB::reconnect(‘foo‘);
如果你因為超過了底層 PDO 執行個體的 max_connections
的限制,需要關閉特定的資料庫連接,可以通過 disconnect
方法:
DB::disconnect(‘foo‘);
尋找日誌記錄#
Laravel 可以在記憶體裡訪問這次請求中所有的尋找語句。然而在有些例子下要注意,比如一次添加 大量的資料,可能會導致應用程式耗損過多記憶體。 如果要啟用日誌,可以使用 enableQueryLog
方法:
DB::connection()->enableQueryLog();
要得到執行過的尋找紀錄數組,你可以使用 getQueryLog
方法:
$queries = DB::getQueryLog();
laravel transaction : laravel 的事務是不支援eloquent的, 要用DB::的方式