2016-03-07 101 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