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()都會在失敗時回滾,那麼要測試你的代碼而不用回滾。 –