4

"問題"

プロファイラーで:

  • クエリを選択
  • 別の選択クエリ
  • 3 番目のクエリ

そして今、コントローラーで挿入を呼び出すので、このクエリが実行されます

    $re=new Requests();
    $re->setViewed(false);
    $em->persist($add);
    $em->flush();

そして、別の「3」クエリが発生します。 ここに画像の説明を入力

大丈夫ですか?それとも私は何か間違っていますか?...

4

1 に答える 1

6

への各呼び出しDoctrine\ORM\EntityManager#flushは、トランザクションにラップされます。

つまり、現在の RDBM がトランザクションをサポートしている場合、ORM は自動的START TRANSACTIONに必要なすべてのクエリを実行し、COMMITすべてがうまくいっROLLBACKたか、エラーが発生したかのいずれかを実行します。

Doctrine 2 ORM がどのようにトランザクションと同時実行性を処理するかについては、ドキュメントで詳しく読むことができます。

于 2013-03-13T12:28:35.257 に答える