Php 事务在laravel中不工作

Php 事务在laravel中不工作,php,database,laravel,transactions,controllers,Php,Database,Laravel,Transactions,Controllers,我在拉威尔的交易中遇到了问题。 当我尝试使用以下代码执行此操作时,屏幕上会出现错误,就好像我没有事务一样 \DB::transaction(function() use ($movement, $movementRows) { $movement->save(); $movement->rows()->saveMany($movementRows); }); 当我尝试使用下面的代码时,第一个对象被保存,尽管第二个失败 \DB::beginTransaction()

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

\DB::transaction(function() use ($movement, $movementRows) {
   $movement->save();
   $movement->rows()->saveMany($movementRows);
});
当我尝试使用下面的代码时,第一个对象被保存,尽管第二个失败

\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 ...
}

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

PHP7.1.7。Laravel 5.1出现了什么错误?查询中出现了什么错误,我的测试使用了错误的外键。是的,我使用的是MySQL,表引擎是InnoDBOk,您使用的是最新的Laravel 5.1版本吗?对于未捕获的第一个代码异常,它们仅回滚事务并重新引发异常。在这两种情况下,交易都应该有效。抛出了什么样的异常?您是否100%确定,该移动记录是在此处创建的?Laravel Framework版本5.1.46(LTS)。我在第一段代码中编写了一个try-catch部分,同样的事情发生了:保存第一条记录,即使第二条记录失败,但正如我所说的,确切的异常是什么?确定这里发生了什么可能很重要,因为正常情况下它应该可以正常工作,没有任何问题。PDOException{#664#消息:“SQLSTATE[23000]:完整性约束冲突:1452无法添加或更新子行:外键约束失败(
siie_cartro
wms_mvt_rows
,约束
wms_mvt_rows_item_id_foreign
外键(
item_id
)引用
erpu items
id_item
)删除级联)