У меня есть сущность, «AnnualReport», которая принимает коллекцию сущностей «AnnualReportStaffing». В годовом отчете есть четыре разных раздела «Укомплектование персоналом» и, следовательно, четыре из этих коллекций (ArrayCollection). Поскольку я не могу использовать традиционные отношения «один-ко-многим», мне нужно использовать «Один-ко-многим» с таблицей Join, как описано here.Symfony2 и доктрина: один-ко-многим с присоединением к столовой сиротской помощи
Так, например, одна из моих коллекций Кадровых определяются как таковы в моей ГО классе:
/**
* @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;
Теперь, когда приходит время, чтобы удалить ГО, Doctrine удаляет связь между отчетом и кадровым обеспечением внутри таблицы соединений, но НЕ удаляет связанные объекты YearReportStaffing. Я попробовал добавить cascade = {"remove"}, но я получаю нарушение внешнего ключа, потому что он пытается удалить объект укомплектования, прежде чем объединение таблицы соединений будет удалено.
Каков наилучший способ удалить осиротевшие объекты укомплектования персоналом? Очевидно, orphanRemoval = true не ответ.
Это необходимо для столбца отчета, но не имеет значения для удаления сиротских сотрудников. – Ravioli87