Ich habe eine Entität, "AnnualReport", die eine Sammlung von Entitäten akzeptiert, "AnnualReportStaffing". Ein Jahresbericht enthält vier verschiedene Staffing-Abschnitte und damit vier dieser Sammlungen (ArrayCollection). Da ich eine traditionelle Eins-zu-viele-Beziehung nicht verwenden kann, muss ich One-to-Many mit Join Table wie beschrieben here verwenden.Symfony2 und Doctrine: Eins-zu-Viele mit Join Table Orphan Removal
zum Beispiel ist einer meiner Personal Sammlungen So definiert als solche in meiner FTSBERICHT Klasse:
/**
* @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;
Nun, wenn es an der Zeit zu löschen eine FTSBERICHT kommt, Lehre entfernt die Beziehung zwischen dem Bericht und dem Personal innerhalb der Join-Tabelle, aber es entfernt NICHT die damit verbundenen AnnualReportStaffing-Entitäten. Ich habe versucht, cascade = {"remove"} hinzuzufügen, aber ich bekomme eine Fremdschlüsselverletzung, weil versucht wird, die Staffing-Entität zu entfernen, bevor die Join-Tabellenzuordnung gelöscht wird.
Was ist der beste Weg, um die verwaisten Staffing-Entitäten zu entfernen? Offensichtlich ist orphanRemoval = true nicht die Antwort.
Dies wurde für die Berichtsspalte benötigt, machte aber keinen Unterschied für die Löschung von verwaisten Staffing-Entitäten. – Ravioli87