エンティティのコレクション「AnnualReportStaffing」を受け入れるエンティティ「AnnualReport」があります。年次報告書には 4 つの異なる人員配置セクションがあるため、これらのコレクションのうちの 4 つ (ArrayCollection) があります。従来の 1 対多の関係を使用できないため、ここで説明されているように、Join Table で One-To-Many を使用する必要があります。
たとえば、Staffing コレクションの 1 つは、AnnualReport クラスで次のように定義されています。
/**
* @ORM\ManyToMany(targetEntity="AnnualReportStaffing", cascade={"persist"}, orphanRemoval=true, fetch="LAZY")
* @ORM\JoinTable(name="annualreports_staffingtenure",
* joinColumns={@ORM\JoinColumn(name="staffing_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="annualreport_id", referencedColumnName="id")},
* )
*/
private $staffing;
AnnualReport を削除するときが来たら、Doctrine は結合テーブル内のレポートと Staffing の間の関係を削除しますが、関連する AnnualReportStaffing エンティティは削除しません。cascade={"remove"} を追加しようとしましたが、結合テーブルの関連付けが削除される前に Staffing エンティティを削除しようとしているため、外部キー違反が発生します。
孤立した Staffing エンティティを削除する最良の方法は何ですか? 明らかに orphanRemoval=true は答えではありません。