こんにちは私はカスケードするときOneToMany関係でエンティティを削除しようとしています。 数時間のデバッグの後、最新の2.1.2から2.0.2にドクトリンをダウングレードしようとしたところ、突然動作を開始しました。Doctrine 2.0対2.1カスケード削除OneToMany
2つのエンティティ会社と住所1:Nの関係を想像してください。
エンティティ会社を削除しようとすると、割り当てられたアドレスも削除されます。
$em->remove($company);
$em->flush();
doctrine 2.1.2では、アドレスの削除は実行されないため、整合性制約は失敗します。バージョン2.0.2では完全に動作します。私がEntityAuditの拡張子https://github.com/simplethings/EntityAuditを使用している場合、LogRevisionListenerはdoctrine 2.1.2(もちろん2.0.2でも)のアドレスエンティティ(それらをrevtype = DELに設定)をバージョン管理していますが、UnitOfWorkはそれを削除していません。
2.0.2と2.1.2でカスケード削除を処理する方法に違いはありますか?
$em->remove($object);
$em->flush();
$em->remove($user);
$em->flush();
たぶん、あなたはアドレスのためにあなたのcompany
にfindAll
を使用して、これを削除することができます
は、私は同じ問題を満たしていると私はそのコードで彼を解決した非常に
今日私もこの問題に遭遇しました。私は2.1.6を使用しています。 :/ – mokagio
私は自分自身を修正する必要があります、それは今私のために働く!私は 'cascade = {" all "}"を使用していましたが、 '' cascade = {"remove"} 'で変更したところ、すべてうまく動作し始めました。 – mokagio
カスケードオプションの組み合わせについていくつかのテストをした結果、エンティティに対して集中的な操作を行っているため、おそらく私の問題はアノテーションセットまたはDoctrine自体に起因するとは限りません。 '' merge ''オプションは問題を与えるオプションでした。 とにかく助けて欲しいと思っています。 – mokagio