Einfügung der Doktrin in das postPersist-Ereignis
Ich möchte ein neues Feedelement hinzufügen, wenn die Entität bestehen bleibt und aktualisiert wird. Ich schreibe diesen Ereignis-Listener (postUpdate ist gleich):
<code>public function postPersist(LifecycleEventArgs $args) { $entity = $args->getEntity(); $em = $args->getEntityManager(); if ($entity instanceof FeedItemInterface) { $feed = new FeedEntity(); $feed->setTitle($entity->getFeedTitle()); $feed->setEntity($entity->getFeedEntityId()); $feed->setType($entity->getFeedType()); if($entity->isFeedTranslatable()) { $feed->getEnTranslation()->setTitle($entity->getFeedTitle('en')); } $em->persist($feed); $em->flush(); } } </code>
Aber ich habe
Verletzung der Integritätsbedingung: 1062 Doppelter Eintrag '30 -2 'für Schlüssel' PRIMARY '
und in log a haben zwei Einfügungen:
INSERT INTO interview_scientificdirection (interview_id, scientificdirection_id) VALUES (?,?) ([30,2]) INSERT INTO interview_scientificdirection (interview_id, scientificdirection_id) VALUES (?,?) ([30,2])
scientificdirection ist eine Viele-zu-Viele-Beziehungstabelle für die Entität, auf der wir bestehen wollen. In der Frontend-Anwendung funktioniert alles einwandfrei, aber in Sonata Admin habe ich dieses Problem :(