GORM Frage

Dieser Bereich dient dazu, neue Features zu diskutieren und für die Entwicklung zu dokumentieren. // This area is dedicated to new features including proposals and documentation.
Gesperrt
welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

GORM Frage

Beitrag von welworx » 10.03.2013, 02:46:34

Hallo leute,

ich schreibe grade an einem modul, welches mittels config andere module hinzuladen kann. Dabei muss ich die GORM objekte der verschiedenen module miteinander verknüpfen.

Gibt es einen dynamischen weg, mit dem ich beziehungen erstellen und hinzufügen kann. Hab den GenericORMapperDIMappingConfiguration gefunden, nur müsste ich da wieder eine zusätzliche config anlegen, die ich eigentlich nicht brauche (oder ich habs beim überfliegen nicht verstanden ;)).

ich brauchert im prinzip sowas:

Code: Alles auswählen

addRelation('Mod12Mod2','mod1','mod2','ASSOCIATION')
 
Sollte dem gleichen entsprechen wie normalerweise in der config datei:

Code: Alles auswählen

[Mod12Mod2]
Type = "ASSOCIATION"
SourceObject = "mod1"
TargetObject = "mod2"
LG Werner

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

Re: GORM Frage

Beitrag von dr.e. » 10.03.2013, 12:57:46

Hi Werner,

der GORM benötigt grundsätzlich immer die vollständige Konfiguration. Hast du für eine Beziehung oder ein Objekt keine passende Konfiguration, kann (und will ;)) der GORM nicht arbeiten.

Dies ist zum einen wichtig für das Mapping von Objekten bzw. Beziehungen auf eine relationales Datenbank-Schema und zum anderen um deine Datenbasis konsistent zu halten. Fügst du "dynamisch" Beziehungen und Objekte hinzu, kann es passieren, dass beim nächsten Lesen/Schreiben deine Daten korrupieren.
Dabei muss ich die GORM objekte der verschiedenen module miteinander verknüpfen.
Kannst du das etwas präzisieren?

Code: Alles auswählen

addRelation('Mod12Mod2','mod1','mod2','ASSOCIATION')
Hast du dir schon mal die Möglichkeit angesehen, Konfigurationen dynamisch zu erweitern? Schau dir mal http://adventure-php-framework.org/Seit ... gurationen an. Damit könntest du relativ einfach beim Hinzufügen eines Moduls die Konfiguration und damit die Möglichkeiten des GORM erweitern.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: GORM Frage

Beitrag von welworx » 10.03.2013, 13:51:13

Das ich eine vollständige config brauch ist mir schon klar. Aber es macht wohl keinen unterschied ob ich die mittels addRelationConfiguration dazu lade oder einfach selbst erstelle. Mir ist schon klar, dass ich die objekte die ich verknüpfen möchte vorher mittels addMappingConfiguration hinzuladen muss.

Die Idee ist, dass ich ein modul (records) habe, dass je nach config mit anderen modulen verknüpft werden kann. Verknüpft werden die GORM Objekte (jeweils genau 2 der module).

BSP: Record2Category oder Record2User

Klar kann ich das in eine Config schreiben, aber falls möglich würde mir die variante ohne config datei besser gefallen.

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

Re: GORM Frage

Beitrag von dr.e. » 10.03.2013, 14:00:50

Hallo Werner,
Aber es macht wohl keinen unterschied ob ich die mittels addRelationConfiguration dazu lade oder einfach selbst erstelle.
Naja, doch! :) Wenn du einfach nur per addRelation() - wie in deinem Vorschlag - eine Relations-Definition hinzufügst, ist diese nur in der aktuellen Instanz verfügbar. Beim nächsten Request oder in der nächsten Session - je nach Gültigkeitsbereich - ist diese wieder weg.
Die Idee ist, dass ich ein modul (records) habe, dass je nach config mit anderen modulen verknüpft werden kann. Verknüpft werden die GORM Objekte (jeweils genau 2 der module).

BSP: Record2Category oder Record2User
OK, verstanden.
Klar kann ich das in eine Config schreiben, aber falls möglich würde mir die variante ohne config datei besser gefallen.
Ich fürchte mit dem aktuellen Design des GORM kommst du um die Konfiguration nicht herum. Diese musst du jedoch nur ein einzoges Mal schreiben und Hinzufügen. Anschließend kannst du jedes Objekt deiner Konfiguration mit den definierten Beziehungen - z.B. Record2User - in Beziehung setzen.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: GORM Frage

Beitrag von welworx » 10.03.2013, 14:23:47

Naja, doch! :) Wenn du einfach nur per addRelation() - wie in deinem Vorschlag - eine Relations-Definition hinzufügst, ist diese nur in der aktuellen Instanz verfügbar. Beim nächsten Request oder in der nächsten Session - je nach Gültigkeitsbereich - ist diese wieder weg.
Ja das ist mir schon klar. Aber da ich das in die funktion getMapper integriert habe, wird die bei jedem aufruf des Modules sowieso wieder hinzugeladen.

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

Re: GORM Frage

Beitrag von dr.e. » 10.03.2013, 14:39:01

Hallo Werner,

in deinem Fall ist das sicher kein Problem. Allerdings möchte ich als Framework-Anbieter auch andere Anwender davor schützen, unbewusst Daten-Inkonsistenzen zu erzeugen. Weitere Probleme bei der Anwendung entstehen beispielsweise auch dann, wenn die Datenbank für die Speicherung der Beziehung noch nicht vorbereitet ist, sprich eine Tabelle noch nicht existiert. Dann kommt es bei der Anwendung zu Laufzeitfehlern - abhängig von der Aktion, die du auf der GUI tätigst - und diese sind bei der Fehlersuche oft sehr ärgerlich.

Wenn du möchtest und du mir deinen Anwendungsfall etwas mehr im Detail schilderst, können wir gerne den APF Developer Chat nutzen eine Lösung für den Anwendungsfall zu diskutieren.
Viele Grüße,
Christian

welworx
Beiträge: 620
Registriert: 27.09.2010, 19:29:44

Re: GORM Frage

Beitrag von welworx » 10.03.2013, 15:43:10

ja das mim setup habe ich mir in der tat auch schon überlegt und dazu noch keine einfache lösung gefunden ;) Vermutlich ist es am einfachsten die Beziehungen einfach von hand zu erzeugen, wenn man das Modul konfiguriert.

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

Re: GORM Frage

Beitrag von dr.e. » 10.03.2013, 20:03:24

Hi Werner,

ok, dann melde dich, wenn du noch Fragen hast! :)
Viele Grüße,
Christian

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast