Mehrfache Relationen von Klassen
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Mehrfache Relationen von Klassen
Hallo,
ich bin relativ neu bei webEdition und habe zuvor eher alles selbst programmiert (OOP mit PHP, MySQL, diversen PHP Frameworks usw).
Bei webEdition fand ich es echt sehr einfach und praktisch, Klassen (was ja quasi eine Tabelle in der DB darstellt) zu erzeugen über das Backend.
Was aber irgendwie sehr schwammig bis gar nicht beschrieben ist (oder ich finde es nicht konkret), wie man verschiedene und mehrere Klassen in Relation zueinander bringt.
Direkt via MySQL würde ich zwei Tabellen erzeugen (Tabelle 1 und Tabelle 2), wobei Tabelle 2 eine Spalte mit "tabelle_1_id" enthält.
Ich kann in Tabelle 2 jetzt massig Einträge machen, die auf bestimmte Einträge von Tabelle 1 verweisen (wie z.B. eine Kundendb mit Adressbuch - ein Kunde kann mehrere Adressen haben).
Um für einen Eintrag aus Tabelle 1 jetzt alle zugehörigen aus Tabelle 2 zu zu ziehen, würde ich einen SELECT ... LEFT JOIN nutzen. Fertig.
Aber wie bildet man das via WE ab? Wo oder wie richte ich ein, welche Spalte der jeweiligen Tabelle der Index ist, worauf sich die zweite Tabelle beziehen soll?
Ich hab gesehen dass es den Typ "Objekt" und "Multiobjekt" gibt - wo ich halt eine zu verknüpfende Klasse auswählen kann. Aber welche Spalten zueinander gehören, kann ich nirgends erkennen ...?
ich bin relativ neu bei webEdition und habe zuvor eher alles selbst programmiert (OOP mit PHP, MySQL, diversen PHP Frameworks usw).
Bei webEdition fand ich es echt sehr einfach und praktisch, Klassen (was ja quasi eine Tabelle in der DB darstellt) zu erzeugen über das Backend.
Was aber irgendwie sehr schwammig bis gar nicht beschrieben ist (oder ich finde es nicht konkret), wie man verschiedene und mehrere Klassen in Relation zueinander bringt.
Direkt via MySQL würde ich zwei Tabellen erzeugen (Tabelle 1 und Tabelle 2), wobei Tabelle 2 eine Spalte mit "tabelle_1_id" enthält.
Ich kann in Tabelle 2 jetzt massig Einträge machen, die auf bestimmte Einträge von Tabelle 1 verweisen (wie z.B. eine Kundendb mit Adressbuch - ein Kunde kann mehrere Adressen haben).
Um für einen Eintrag aus Tabelle 1 jetzt alle zugehörigen aus Tabelle 2 zu zu ziehen, würde ich einen SELECT ... LEFT JOIN nutzen. Fertig.
Aber wie bildet man das via WE ab? Wo oder wie richte ich ein, welche Spalte der jeweiligen Tabelle der Index ist, worauf sich die zweite Tabelle beziehen soll?
Ich hab gesehen dass es den Typ "Objekt" und "Multiobjekt" gibt - wo ich halt eine zu verknüpfende Klasse auswählen kann. Aber welche Spalten zueinander gehören, kann ich nirgends erkennen ...?
- Carrear
- webEdition Partner
- Beiträge: 646
- Registriert: Do 17. Jan 2013, 03:02
- Wohnort: Hannover
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
Mal angenommen wir haben zwei Klassen
Blogeinträge und Kommentare. Dann speicherst du in den Kommentaren die ID des zugehörigen Posts. In der Listview der Blogbeiträge schreibst du dann die ID in eine variable und die nutzt du um IM Listview einen weiteren Listview über Kommentare zu machen. Dafür schreibst du eine we:condition, bei der du die ID als 'Filterkriterium' angeben kannst
Ich kanns dir grad nicht mal zeigen, weil in meiner privaten Installation das DB/Objektmodul deaktiviert ist. Schau dir die zwei Befehle condition und condition add an. Mehrere condition add's kannst du innerhalb von condition mit condition and und condition or logisch miteinander verknüpfen wie du es auch deinen queries kennst.
Blogeinträge und Kommentare. Dann speicherst du in den Kommentaren die ID des zugehörigen Posts. In der Listview der Blogbeiträge schreibst du dann die ID in eine variable und die nutzt du um IM Listview einen weiteren Listview über Kommentare zu machen. Dafür schreibst du eine we:condition, bei der du die ID als 'Filterkriterium' angeben kannst
Ich kanns dir grad nicht mal zeigen, weil in meiner privaten Installation das DB/Objektmodul deaktiviert ist. Schau dir die zwei Befehle condition und condition add an. Mehrere condition add's kannst du innerhalb von condition mit condition and und condition or logisch miteinander verknüpfen wie du es auch deinen queries kennst.
Re: Mehrfache Relationen von Klassen
@borisbojic:
du bist eigentlich schon richtig.
Wenn du eine 1:1 Relation benötigst, also der normale (left) Join, dann ist die Verknüpfung Objekt in der Klasse richtig. Die Spalte wird indiziert und bei der Abfrage (listview) automatisch verknüpft (join).
Die 1:n Relation, wird als Multiobjekt realisiert. Wobei dies nicht vollständig DB basiert abgebildet ist, also Teile in php laufen, die eigentlich von der DB per normalisierter Zwischentabelle passieren sollte. (Steht bei uns schon auf der Roadmap).
du bist eigentlich schon richtig.
Wenn du eine 1:1 Relation benötigst, also der normale (left) Join, dann ist die Verknüpfung Objekt in der Klasse richtig. Die Spalte wird indiziert und bei der Abfrage (listview) automatisch verknüpft (join).
Die 1:n Relation, wird als Multiobjekt realisiert. Wobei dies nicht vollständig DB basiert abgebildet ist, also Teile in php laufen, die eigentlich von der DB per normalisierter Zwischentabelle passieren sollte. (Steht bei uns schon auf der Roadmap).
webEdition-Kern-Entwickler
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Re: Mehrfache Relationen von Klassen
Guten Morgen!
Danke für die Antwort - das hilft mir schonmal weiter.
Multiobjekte sind als serialized String gespeichert. Nicht soooo schön, aber wie du sagst, es ist ja in Arbeit.
Kann man euch eigentlich dabei unterstützen?
Danke für die Antwort - das hilft mir schonmal weiter.
Multiobjekte sind als serialized String gespeichert. Nicht soooo schön, aber wie du sagst, es ist ja in Arbeit.
Kann man euch eigentlich dabei unterstützen?
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Re: Mehrfache Relationen von Klassen
Eine Frage zur Ausgabe - ich habe nun alle Objekte einer Klasse ausgegeben. Und darin jeweils die passenden (zugewiesenen) Objekte des "Oberobjekts" ermittelt und ausgegeben.
Sprich: Reiseziel-Kategorien (Europa, Asien, etc) und Reiseziele selbst (Spanien, Italien, etc.).
Gelöst habe ich es so:
Meine Frage - ist das so in Ordnung und geht (eh) nicht anders? Oder ist die Lösung eher "eigenartig"?
Danke
Sprich: Reiseziel-Kategorien (Europa, Asien, etc) und Reiseziele selbst (Spanien, Italien, etc.).
Gelöst habe ich es so:
Code: Alles auswählen
<we:comment>Alle Reiseziel-Kategorien holen und ausgeben</we:comment>
<we:listview type="object" classid="6">
<we:repeat>
<h3 class="accopen"><we:field type="text" name="Titel" /></h3>
<section class="smallboxes acccont cf">
<we:comment>Alle der Kategorie zugewiesenen Reiseziele holen und ausgeben</we:comment>
<we:field type="text" name="WE_ID" to="global" nameto="reise_id" />
<we:condition name="condition">
<we:conditionAdd field="object_6" value="\$reise_id" compare="="/>
</we:condition>
<we:listview type="object" classid="2" condition="\$condition">
<we:repeat>
<article class="w33 ovrlhref">
<a href="#"><we:field type="img" name="Bild" /></a>
<h4><a href="#"><span><we:field type="text" name="Titel" /></span>
<we:field type="text" name="Reiseziel-Titel" /></a></h4>
</article>
</we:repeat>
</we:listview>
</section>
</we:repeat>
</we:listview>
Danke
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
Hallo Boris,
Grundsätzlich kann man das schon so lösen.
Alternativ könnte man das aber auch über die in webEdition verfügbaren Kategorien abbilden.
Liebe Grüße,
Sascha
Grundsätzlich kann man das schon so lösen.
Alternativ könnte man das aber auch über die in webEdition verfügbaren Kategorien abbilden.
Liebe Grüße,
Sascha
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Re: Mehrfache Relationen von Klassen
Kann man nicht, da meine Reiseziel-Kategorien aus vielen Informationen bestehen (Titel, Untertitel, Beschreibungstext, Bild etc)WBTMagnum hat geschrieben:Hallo Boris,
Grundsätzlich kann man das schon so lösen.
Alternativ könnte man das aber auch über die in webEdition verfügbaren Kategorien abbilden.
Liebe Grüße,
Sascha
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
Aber diese Informationen sind doch im Objekt gespeichert, oder?Kann man nicht, da meine Reiseziel-Kategorien aus vielen Informationen bestehen (Titel, Untertitel, Beschreibungstext, Bild etc)
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Re: Mehrfache Relationen von Klassen
Ja klar, das ist ein komplettes Objekt. Aber was hat das mit dem Modul "Kategorien" zu tun ...?WBTMagnum hat geschrieben: Aber diese Informationen sind doch im Objekt gespeichert, oder?
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
Man kann Dokumenten und Objekten beliebige Kategorien zuweisen (sh. Eigenschaften).
Beispiel:
Der Destination Madrid wird die Kategorie /Europa/Spanien zugewiesen. Daraus kannst du dir die Hierarchie ableiten und ggf. die Objekte der übergeordneten Kategorien abfragen.
Ev. braucht es hier zwar "ein wenig" PHP, grundsätzlich lasst sich das aber auch so umsetzen.
Liebe Grüße,
Sascha
Beispiel:
Der Destination Madrid wird die Kategorie /Europa/Spanien zugewiesen. Daraus kannst du dir die Hierarchie ableiten und ggf. die Objekte der übergeordneten Kategorien abfragen.
Ev. braucht es hier zwar "ein wenig" PHP, grundsätzlich lasst sich das aber auch so umsetzen.
Liebe Grüße,
Sascha
- Carrear
- webEdition Partner
- Beiträge: 646
- Registriert: Do 17. Jan 2013, 03:02
- Wohnort: Hannover
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
Ich habe nur anstrengende Erfahrungen mit Kategorien gemacht. Du bist eingeschränlkter, als wenn du mit Multiobjekten arbeitest. Ich habe leider gerade kein Konkretes Beispiel zur Hand, stelle die Behauptung aber mal in den Raum. Alles was du mit Kategorien abbilden kannst, lässt sich auch wunderbar mit Multiobjekten abbilden und du hast die volle Freiheit, was du damit so machst.
-
- Member
- Beiträge: 45
- Registriert: Mi 11. Jun 2014, 09:30
Re: Mehrfache Relationen von Klassen
Einmal ein großes Dankeschön in die Runde ... wenn das Projekt final online geht, zeig ich es euch mal
-
- webEdition Partner
- Beiträge: 1825
- Registriert: Di 7. Mär 2006, 16:50
- Wohnort: Wien
- Kontaktdaten:
Re: Mehrfache Relationen von Klassen
@Kategorien:
Ja, die haben natürlich auch ihre schwächen. Es kommt halt immer darauf an was man damit machen will.
Cheers,
Sascha
Ja, die haben natürlich auch ihre schwächen. Es kommt halt immer darauf an was man damit machen will.
Cheers,
Sascha
Re: Mehrfache Relationen von Klassen
ich wage mal die Behauptung, daß Kategorien mal dazu gedacht waren Objekte und Dokumente unter einer Gruppe zusammenfassen zu können, also in gewisser Weise danach zu suchen. Es läßt sich daraus auch ein "könnte sie ebenfalls interessieren" ableiten. Man kann die Gestaltung auch darauf abstimmen. Es läßt sich damit auch sicherlich eine Navigation bauen. Man erstellt halt eine Art händischen Index, der eben genauso gut ist, wie er gepflegt wird.
Ich würde es nicht komplett verteufeln. Kategorien sind auch älter als die Navigation und Multiobjekte. Von der Performance her dürften aktuell Kategorien den Multiobjekten überlegen sein (just a guess).
Ich würde es nicht komplett verteufeln. Kategorien sind auch älter als die Navigation und Multiobjekte. Von der Performance her dürften aktuell Kategorien den Multiobjekten überlegen sein (just a guess).
webEdition-Kern-Entwickler
Re: Mehrfache Relationen von Klassen
Hallo Zusammen,
Kategorien gab es vor den Objekten und nicht vergessen: früher war das Objektmodul kostenpflichtig und gar nicht so günstig.
Und: Kategorien können eben auch Dokumenten zugewiesen werden. Daher haben sie schon eine Berechtigung.
Allerdings nutze ich sie heute auch nur noch sehr selten.
Kategorien gab es vor den Objekten und nicht vergessen: früher war das Objektmodul kostenpflichtig und gar nicht so günstig.
Und: Kategorien können eben auch Dokumenten zugewiesen werden. Daher haben sie schon eine Berechtigung.
Allerdings nutze ich sie heute auch nur noch sehr selten.
Wer ist online?
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste