Mehrfache Relationen von Klassen

Hier können Sie Fragen bezüglich des Datenbank-/Objektmoduls stellen.
borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Mehrfache Relationen von Klassen

Beitragvon borisbojic » Do 12. Jun 2014, 11:35

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 ...?

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon Carrear » Sa 14. Jun 2014, 00:22

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.

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Mehrfache Relationen von Klassen

Beitragvon mokraemer » Sa 14. Jun 2014, 01:41

@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).
webEdition-Kern-Entwickler

borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Re: Mehrfache Relationen von Klassen

Beitragvon borisbojic » Mo 16. Jun 2014, 06:53

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?

borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Re: Mehrfache Relationen von Klassen

Beitragvon borisbojic » Di 1. Jul 2014, 13:02

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:

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>
Meine Frage - ist das so in Ordnung und geht (eh) nicht anders? Oder ist die Lösung eher "eigenartig"?

Danke :-)

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon WBTMagnum » Di 1. Jul 2014, 14:43

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

borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Re: Mehrfache Relationen von Klassen

Beitragvon borisbojic » Di 1. Jul 2014, 14:47

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
Kann man nicht, da meine Reiseziel-Kategorien aus vielen Informationen bestehen (Titel, Untertitel, Beschreibungstext, Bild etc) ;)

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon WBTMagnum » Di 1. Jul 2014, 14:59

Kann man nicht, da meine Reiseziel-Kategorien aus vielen Informationen bestehen (Titel, Untertitel, Beschreibungstext, Bild etc)
Aber diese Informationen sind doch im Objekt gespeichert, oder?

borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Re: Mehrfache Relationen von Klassen

Beitragvon borisbojic » Di 1. Jul 2014, 15:13

WBTMagnum hat geschrieben: Aber diese Informationen sind doch im Objekt gespeichert, oder?
Ja klar, das ist ein komplettes Objekt. Aber was hat das mit dem Modul "Kategorien" zu tun ...?

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon WBTMagnum » Di 1. Jul 2014, 16:03

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

Benutzeravatar
Carrear
webEdition Partner
webEdition Partner
Beiträge: 646
Registriert: Do 17. Jan 2013, 03:02
Wohnort: Hannover
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon Carrear » Mi 2. Jul 2014, 13:33

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.

borisbojic
Member
Beiträge: 45
Registriert: Mi 11. Jun 2014, 09:30

Re: Mehrfache Relationen von Klassen

Beitragvon borisbojic » Mi 2. Jul 2014, 15:26

Einmal ein großes Dankeschön in die Runde ... wenn das Projekt final online geht, zeig ich es euch mal ;)

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: Mehrfache Relationen von Klassen

Beitragvon WBTMagnum » Do 3. Jul 2014, 10:03

@Kategorien:
Ja, die haben natürlich auch ihre schwächen. Es kommt halt immer darauf an was man damit machen will.

Cheers,
Sascha

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Mehrfache Relationen von Klassen

Beitragvon mokraemer » Do 3. Jul 2014, 18:59

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).
webEdition-Kern-Entwickler

ThomasGoebe

Re: Mehrfache Relationen von Klassen

Beitragvon ThomasGoebe » Do 3. Jul 2014, 20:25

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.


Zurück zu „DB-/Objektmodul“

Wer ist online?

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