laravel中的事务是否仅适用于DB facade?我想知道它是否适用于雄辩的模型;即以下代码将具有预期效果
DB::beginTransaction();
try {
eloquentModel::query();
} catch (\Exception $e) {
DB::rollback();
}
答案 0 :(得分:3)
是的,适用于DB facade和您的Eloquent Models。
(例如,使用的连接将是默认设置,因此您可以。)
忘记DB::commit();
什么时候可以提交!
此外,您的数据库表引擎必须是支持事务,例如InnoDB。
建议,您也可以使用更简单的事务方法
DB::transaction(function () {
eloquentModel::query();
});
另外,不要害怕测试它,只是为了增加你的信心水平。 说,发现错误,看它是否有效
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();
快乐的编码!