Я вижу, что для обоих объектов PlaceInfo вы установили nullable=false
, поэтому при удалении PlaceInfo нужно не только удалять объекты DistCache, управляемые entityManager, но и удалять их в базе данных.
Я предлагаю вам использовать preRemove
событие из Обратных вызовов жизненного цикла доктрины .При событии удаления записи PlaceInfo вы запрашиваете все объекты DistCache, которые используют удаленный объект PlaceInfo, и сначала удаляете их.
Короче говоря, вам необходимо:
Add @ORM \ HasLifecycleCallbacksперед вашим классом для включения жизненных циклов.
Добавьте функцию preRemove в класс PlaceInfo:
/**
* @ORM\PreRemove
* @param LifecycleEventArgs $event
*/
public function removeDistCache(LifecycleEventArgs $event)
{
$em = $event->getEntityManager();
// Use $em to query and delete the DistCache entities
}