0
我有以下代码:Laravel DB ::交易例外PDO没有活动事务
$new_models = DB::transaction(function() use ($supplier, $address, $addressDetail) {
$new_supplier = $this->setNewSupplier($supplier);
$new_address = $this->setNewAddress($address);
$new_addressDetail = $this->setNewAddressDetail($addressDetail,$new_address->id);
$this->syncSupplierAddress($new_supplier->id,$new_address->id);
$this->updateControlAp($new_supplier->supplier_id);
return [$new_supplier, $new_address, $new_addressDetail];
});
设定方法基本上创建模型与保存()结尾对象; 现在,如果第二个...第n个失败,这工作得很好,但如果第一个失败,则不会。 如果$this->setNewSupplier($supplier);
失败比我得到
"PDOException in Connection.php line 541:
There is no active transaction"
难道我做错了什么吗?另外,如果我从供应商Connection.php中捕获的$this->rollBack();
发表评论,它实际上给了我SQL错误。这里的重要部分是,仅当首次保存()失败时才会工作。
PS。我使用PostgreSQL的不是MySQL,但我不认为它相关
我想你的代码,它仍然行为相同办法。如果我使用 'catch(\ Exception $ e){ // DB :: rollback(); 扔$ e; }'我得到的错误,但如果我取消注释回滚仍PDO:没有活动事务如果第一次保存()失败。我实际上认为save()方法会回滚。如果实际上每次调用save()都会在失败时回滚,那么要测试你的代码而不用回滚。 –