与Eloquent Laravel交易5

Vla*_*kic 5 transactions eloquent laravel-5

我正在使用MyISAM for MySQL,我想在这里使用事务是我的代码:

DB::transaction(function () {
$project = Project::find($id);
$project->users()->detach();
$project->delete();
});
Run Code Online (Sandbox Code Playgroud)

这段代码成功执行,但我不确定交易是否有效...我该如何测试呢?

del*_*bel 16

实际上只有两种方法,特别好,因为DB:transaction不报告错误.

  1. 在闭包内放置一个try/catch块,如果事务失败,则在catch块中设置一个外部变量.

  2. 根据此示例,使用DB :: beginTransaction和rollback/commit再次使用异常处理程序执行手动事务:

    DB::beginTransaction();
    try {
        $project = Project::find($id);
        $project->users()->detach();
        $project->delete();
        DB::commit();
        $success = true;
    } catch (\Exception $e) {
        $success = false;
        DB::rollback();
    }

    if ($success) {
        // the transaction worked ...
    }