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)
确保您使用的是支持事务的引擎。InnoDB 支持事务,但 MyIsam 不支持。因此,例如在 PhpMyAdmin 中打开您的数据库,并确保所有表都设置为 InnoDB 而不是 MyISAM(假设您使用的是 MySQL - 您没有提到您正在使用的数据库)。
| 归档时间: |
|
| 查看次数: |
3045 次 |
| 最近记录: |