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 :(

Antworten auf die Frage(5)

Ihre Antwort auf die Frage