2016-05-10 18 views
1

私のDBトランザクションたので、多くのINSERTクエリは、 laravel 5.2でDBトランザクションが機能していませんか?

DB::transaction(function() use ($visaForms, $fields) { 
      foreach ($visaForms as $visaForm) { 
       $visaForm->save(); 
       foreach ($fields as $field) { 
        $field->visaForm()->associate($visaForm); 
        $field->save(); 
        $field->details()->saveMany($field->getDetails()); 
        !empty($field->getOptions()) ? $field->options()->saveMany($field->getOptions()) : NULL; 
        !empty($field->getRules()) ? $field->rules()->attach($field->getRules()) : NULL; 
       } 
      } 
     }); 

Integrity constraint violationattach()機能によってスロー

、完全なトランザクションはロールバックされていません。部分的な挿入がそこで起こります。 私のコードで何が問題になっていますか?

+0

データベースegnine innoDBまたはMyISAMはありますか? MyISAMはトランザクションについて何も知らない。 –

答えて

1

データベースエンジンがトランザクションをサポートしている場合は、hereをチェックしてください。私は通常次のようにトランザクションを使用します。

DB::beginTransaction(); 
try { 
    //Code (DB insertions, ...) 
    DB::commit(); 
} catch(Exception $e) { 
    DB::rollback(); 
    //Handle error 
} 
関連する問題