Verständnisfrage GORM Objekt-Bäume

Im Entwickler-Forum können Implementierungsdetails sowie Alternativen der Umsetzung diskutiert werden. // Here, developers can discuss implementation details of features of their projects.
Antworten
Thalo
Beiträge: 244
Registriert: 10.08.2009, 16:56:52

Verständnisfrage GORM Objekt-Bäume

Beitrag von Thalo » 10.12.2015, 20:40:56

Hallo,

ausgangssituation ist wie hier:

Code: Alles auswählen

[NavigationNode2NavigationNode]
Type = "COMPOSITION"
SourceObject = "NavigationNode"
TargetObject = "NavigationNode"
Wenn ich nun das Child-NavigationNode mit dem Parent-NavigationNode komponieren will kann ich das mit dem GORM üblicherweise so lösen:

Code: Alles auswählen

$child->addRelatedObject('Navigation2Navigation', $parent); 
durch den Self-Join und dadurch dass SourceObject/TargetObject identisch heißen, kann der GORM ja nun nicht erkennen welches das Child und welches das Parent Objekt ist wodurch ich die Source/Target-Beziehungs-Richtung ja nun selbst vorgeben muss:

Code: Alles auswählen

$parent->addRelatedObject('Navigation2Navigation', $child); 
gibt es hier eine Möglichkeit, dass ich dem Parent sein Child übergeben kann? (So wie Beispiel1)

Ausserdem habe ich das Problem, dass ich vom Child über loadRelatedObject nun nicht an das Parent/Source komme weil ja in die Richtung Target aufgelöst wird. Gibt es hier eine andere Möglichkeit als den Query zu Fuß?

Benutzeravatar
dr.e.
Administrator
Beiträge: 4533
Registriert: 04.11.2007, 16:13:53

Re: Verständnisfrage GORM Objekt-Bäume

Beitrag von dr.e. » 11.12.2015, 17:46:36

Hallo Thalo,

ich habe mir den Quellcode zu diesem Thema angesehen und ich fürchte, das wird aktuell nicht unterstützt. Das Laden des Baumes scheint komplett implementiert zu sein, das Schreiben (z.B. per saveObjectTree()) jedoch nicht.

Die Auflösung in Richtung Vater beim Lesen kannst du IMHO mit TreeItem::getParentItem() lösen. Um zum Root-Knoten zu kommen müsstest du einfach rekursiv über den Baum iterieren bis getParentItem() === null.

Aktuell sehe ich für deine Problemstellung daher keine Lösung, die das APF direkt mitbringt. Ich kann dir anbieten, dass du einen Feature-Request stellst. Sobald sich jemand für das Thema findet kann es in ein Release aufgenommen werden. Nicolas Pecher hatte das ursprünglich mal geschrieben, vielleicht kannst du mit ihm Kontakt aufnehmen.
Viele Grüße,
Christian

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste