removeElement () und clear () funktionieren nicht in Doktrin 2 mit Array-Auflistungseigenschaft

8

Ich versuche, ein paar einfache CRUD mit Doctrine 2 fertig zu machen, aber wenn es Zeit ist, einen Datensatz mit einer Eigenschaft als Array-Sammlung zu aktualisieren, scheint mir removeElement () nicht so zu funktionieren, wie es soll. Ich habe es sogar auf diese lächerlich hässliche Art versucht:

%Vor%

und es hat nicht funktioniert ... Weiß jemand, wie man damit umgeht? Ich habe nach einer Lösung für dieses Problem in vielen verschiedenen Formen gefragt und bisher keine gute Antwort erhalten ... scheint es, dass es an guten Beispielen für Doctrine 2 CRUD-Behandlung fehlt. Ich poste mehr Code auf Anfrage.

Bearbeiten

%Vor%     
la_f0ka 23.06.2011, 23:59
quelle

2 Antworten

12

Ich mache etwas Ähnliches in einem Projekt mit Events, bei denen die Teilnehmer Ihrer Benutzer / Country-Beziehung nicht unähnlich sind. Ich werde nur den Prozess auslegen und Sie können sehen, ob Sie irgendetwas anders machen.

Auf der Entität Participant

%Vor%

Auf der Entität Event :

%Vor%

Auch in Event#__constructor initialisiere ich so:

%Vor%

So aktualisiere ich ein Ereignis:

%Vor%

Die Methoden für die Entität Event sind:

%Vor%

Die Methoden für die Entität Participant sind:

%Vor%

UPDATE : isAttending-Methode

%Vor%     
rojoca 24.06.2011, 16:06
quelle
1

Neue Antwort

In Ihrer Ländereinheit sollten Sie nicht:

%Vor%

anstelle von inversedBy="id"?

Erste Antwort

Sie müssen das Feld Länder in Ihrer Entity als Kaskade entfernen setzen. Zum Beispiel in einer bidirektionalen Beziehung zwischen eins und vielen:

%Vor%

Auf diese Weise speichert Doktrine beim Speichern Ihrer Entität auch Änderungen in Sammlungen, die an Ihre Entität (z. B. Länder) angehängt sind. Andernfalls müssen Sie die Länder, die Sie vor dem Löschen entfernen möchten, explizit entfernen, z. B.

%Vor%

Dies gilt auch für Persist-, Merge und Detach-Operationen. Weitere Informationen hier .

    
faken 24.06.2011 01:00
quelle

Tags und Links