2016-03-07 100 views
0

laravel中的交易是否只與數據庫門面一起工作?我想知道它是否適用於雄辯的模型;即下面的代碼將具有預期的效果laravel中的交易5.1

DB::beginTransaction(); 

try { 
    eloquentModel::query(); 
} catch (\Exception $e) { 
    DB::rollback(); 
} 

回答

3

是的,與數據庫門面和你的雄辯模型一起工作。

(如你的例子,所使用的默認連接,這樣你就ok了。)

不要忘記DB::commit();時,它的確定承諾!

此外,您的數據庫表引擎必須支持事務,例如InnoDB。

建議,您也可以使用更簡單,交易方法

DB::transaction(function() { 

    eloquentModel::query(); 

}); 

此外,不要害怕測試它,只是增加你的信心水平。 說,provoque錯誤,看它的工作

DB::beginTransaction(); 

try { 
    eloquentModel::query(); 
    eloquentModel::create(['field_not_exists' => 'will throw exception!']); 
} catch (\Exception $e) { 
    // DB::rollback(); // test with comment, and without comment, check DB for results ;) 
} 
DB::commit(); 

快樂的編碼!

+0

有幫助。謝謝! – SJB