2012-04-05 5 views
0

Ich habe ein Problem mit der Lehre. Ich habe einen Dateimanager mit Ordnern und Dateien.Lehre - Rekursive speichern nicht mit Doktrin arbeiten

Jetzt möchte ich Gruppen in einem Verzeichnis oder einer einzelnen Datei speichern. Für einen einzelnen Artikel funktioniert es.

Aber wenn ich die Gruppenrechte rekursiv speichern will, wird es nicht funktionieren. Doctrine wirft keinen Fehler oder eine Ausnahme. Aber es speichert keine Änderungen an den Unterverzeichnissen und Dateien in den Unterverzeichnissen.

Das ist mein Modell:

http://pastebin.com/nK6MqiiS

Beide Modelle Model_File_Item und Model_File_Dir dieses Modell erweitern. Alles funktioniert, bis die Methode "setGroupsRecursive()" die Gruppe in das Verzeichnis oder die Datei speichern will.

Ich habe Protokolle in der Datei geschrieben .. alles ist in Ordnung, und jedes Element wird gespeichert, aber die Änderungen werden nicht in der Datenbank gespeichert und ich weiß nicht warum.

EDIT: die Gruppendefinition sieht wie folgt aus:

Model_File_Dir & Model_File_Item:

/** 
* Owning Side 
* 
* @ManyToMany(targetEntity="Model_Group", inversedBy="dirs") 
* @JoinTable(name="dir_groups", 
*  joinColumns={@JoinColumn(name="dir_id", referencedColumnName="id")}, 
*  inverseJoinColumns={@JoinColumn(name="group_id", referencedColumnName="id")} 
*  ) 
*/ 
protected $groups; 

und die Model_Group sieht wie folgt aus:

/** 
* @ManyToMany(targetEntity="Model_File_Dir", mappedBy="groups") 
*/ 
protected $dirs; 

/** 
* @ManyToMany(targetEntity="Model_File_Item", mappedBy="groups") 
*/ 
protected $files; 

Antwort

1

Ich glaube, Sie brauchen cascade operations dafür. Denken Sie klug mit bidirektionalen Beziehungen (insbesondere mit Kaskadenoperationen) wie beschrieben here und here. Hoffe das hilft!

0

Um etwas in der Datenbank mit Lehre sparen Sie müssen Sie es mit dem Entitymanager leeren. Denken Sie auch daran, dass in Relationen die Eigentümerseite der Relation gelöscht werden muss, ansonsten werden Änderungen ignoriert.

Check it!

Verwandte Themen