2016-05-23 15 views
2

Ich habe ein kleines Problem, und ich kann es nicht lösen. Ich habe eine Steuerung, die 4 Variablen mit AJAX akzeptieren und ich muss Daten in die erste Tabelle einfügen und dann ID-Wert aus der ersten Tabelle und fügen Sie es auf 2 mit 2 zusätzlichen Parametern. Also, meine app Struktur ist:Erstellen Sie etwas wie SQL-Trigger in Doctrine/Symfony 3

1) Schlagworte Tabelle mit Feldern KeywordId, KeywordVal und Seiten-ID (getted von AJAX)

2) Übersetzungen Tabelle mit Feldern KeywordId (erhalten von Keywords.keywordId), und langcode Übersetzung (AJAX)

3) Controller, die Daten von Ajax erhalten, fortfahren und in Tabelle einfügen.

Also, meine Frage ist als nächstes: Wie kann ich meinen EventListener konfigurieren? Dieser Listener muss nach der Methode flush() und insret in der Tabelle Translations ausgeführt werden.

Antwort

1

Warum Sie nicht alles im Controller erstellen, denn um alles in einem EventListener zu tun, müssen Sie in gewisser Weise die Werte an den Listener übergeben.

Wenn Sie es in Ihrem Controller tun, können Sie zunächst die erste Entity mit den erforderlichen Parametern persistieren und danach die zweite Entity, die mit der zuvor erstellten Entity verknüpft ist.

Etwas wie:

$em = $this->getDoctrine()->getManager(); 
$keyword = new Keyword($param1, $param2); 
$em->persist($keyword); 
$keywordTranslation = new KeywordTranslation($keyword, $param3, $param4); 
$em->persist($keywordTranslation); 
$em->flush(); 

Ich denke, ist so viel einfach

+0

Intersting Lösung, werde es versuchen, wenn kein Erfolg mit Listeners :) Tnx haben –

1

zu tun Was Sie scheinen eine Lehre Zuhörer zu müssen. Hier ist der documentation, um einen Doctrine-Listener zu erstellen. Vielleicht möchten Sie das preFlush-Ereignis meiner Meinung nach verwenden. Seien Sie vorsichtig, dieses Ereignis wird für jeden Flush ausgelöst, nicht nur für Keywords, Sie müssen also zuerst prüfen, ob es sich um ein Keyword handelt, bevor Sie Übersetzungen erstellen.

EDIT: Nevermind, nur bemerkt, das beantwortet nicht auf Ihre Frage. Ich denke jedoch, dass Ihr Modell verbessert werden könnte, da Sie nicht mehrere Male bündig sein müssen, um eine einzelne Datenmenge einzufügen. Theoretisch sollten Sie eine OneToMany Beziehung zwischen Keywords und Übersetzungen haben, und Doctrine würde es alleine schaffen, die beiden Entitäten mit ihrer ID beim Einfügen zu verknüpfen.

Verwandte Themen