$ em-remove () symfony2 löscht alle Zeilen

7

Ich habe ein Problem beim Löschen von etwas von einem BD.

Das Problem ist, dass es nicht nur das Objekt löscht, nach dem ich gesucht habe (mit findOneBy), sondern auch alle Objekte, die mit der Haupt-ID in Beziehung stehen.

// --- Controller

%Vor%

// --- Profiler (Abfrage)

%Vor%

Wie lösche ich die eine Zeile, die ich von der db bekomme?

    
ib.programmer 16.07.2013, 19:50
quelle

2 Antworten

4

Verwenden Sie DQL

%Vor%

Dies wird nur ein einzelnes Auto mit ID 10 und Besitzer mit ID 4 entfernen.

    
Norbert Orzechowicz 16.07.2013, 20:24
quelle
24

Ich habe die obige Antwort abgelehnt, weil ich genug von Leuten habe, die String-DQLs verwenden. Es ist nicht standardisiert, nicht objektorientiert (obwohl im Hintergrund dql mit Objekten arbeitet), es verwendet keine Caching-Mechanismen, die Query Builder bietet, es ist nicht flexibel und sieht einfach unrein aus.

Hier ist der "richtige Weg" (IMHO):

  1. Sie fügen die Repository-Klasse für Entität
  2. hinzu
  3. Sie fügen die gewünschte Methode mit einem Abfrage-Generator hinzu
  4. Sie rufen die Methode auf, während Sie die Parameter übergeben, die für eine bestimmte REPOSITORY OBJECT ORIENTED ACTION
  5. benötigt werden
  6. Sie erhalten ein leicht zu handhabendes Ergebnis

Hier ist der Code:

%Vor%

Siehe auch Ссылка für Abfrage-Builder-Details. Es gibt viele "Profis" und ich sehe keine "Nachteile" für die Verwendung von Builder.

LATE UPDATE

Außerdem werden viele Entity-Ereignisse von Doctrine bei Verwendung von DQL nicht ausgelöst.

    
drakonli 28.07.2014 09:07
quelle

Tags und Links