交易在 Laravel 中不起作用

Edw*_*ona 2 php database transactions controllers laravel

我在 Laravel 中遇到交易问题。当我尝试使用以下代码执行此操作时,错误出现在屏幕上,就好像我没有交易一样。

\DB::transaction(function() use ($movement, $movementRows) {
   $movement->save();
   $movement->rows()->saveMany($movementRows);
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用下面的代码执行此操作时,尽管第二个对象失败,但会保存第一个对象。

\DB::beginTransaction();
try {
     $movement->save();
     $movement->rows()->saveMany($movementRows);
      \DB::commit();
      $success = true;
} catch (\Exception $e) {
    $success = false;
    \DB::rollback();
}

if ($success) {
    // the transaction worked ...
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*łek 5

确保您使用的是支持事务的引擎。InnoDB 支持事务,但 MyIsam 不支持。因此,例如在 PhpMyAdmin 中打开您的数据库,并确保所有表都设置为 InnoDB 而不是 MyISAM(假设您使用的是 MySQL - 您没有提到您正在使用的数据库)。