Drei Verständnisfragen rund um Objekte, Aliase, etc

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

Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon borisbojic » Mi 2. Jul 2014, 11:31

Moin,

drei kleine Verständnisfragen, die mich gestern Abend ein wenig zur Verzweiflung getrieben haben :mrgreen:

Folgendes Szenario - ich habe zwei Klassen. Die Klasse Hotels (Name, Bild, Preis usw.) und dann eine Klasse Angebote.

In der Klasse Angebote kann man (über den Feldtyp Objekt) ein Hotel auswählen.

Lasse ich nun alle Angebote ausgeben, habe ich ja auch alle Felder des jeweils ausgewählen Hotels.

Zumindest die, die ich im Backend definiert habe - aber wie erhalte ich die ID des Hotels (also des eingebundenen Objekts)? Oder dessen (sofern angelegt) SEO-Url?


Zweite Frage: bei der Ausgabe meiner Angebote kann ich die Felder des eingebundenen Hotels zwar ausgeben, z.B. so:

<we:field name="Bewertung" />

Wenn ich das aber in eine globale Variable kopieren will, ist diese nicht nur leer, sie ist überhaupt nicht vorhanden:

<we:field type="text" name="Bewertung" to="global" nameto="bewertung" />

Obiges geht nicht ... aber warum?


Und letzte Frage - es kann ja durchaus passieren, dass zwei Klassen die gleiche Feldbezeichung haben (z.B. Titel oder Beschreibung). Binde ich ein Objekt in ein anderes rein, habe ich das Problem dass WE an sich jetzt nicht "weiß", ob ich bei der Ausgabe nun den Titel des Hauptobjektes ausgeben will oder den Titel des eingebundenen Objektes ... was wäre hier die Lösung? Kann ich Aliase vergeben in der Listview und bei der Ausgabe nutzen (sowas wie SELECT t1.title AS titel-1, t2.title AS titel-2) ?

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

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

Hallo Boris,

vorweg die Frage, welche webEdition Version du hast.

Wenn du in einer Klasse ein Feld vom Type Multiobject hast und Zugriff auf alle Daten dieses Multiobjektes haben möchtest, dann musst du dort, wo du das Angebot ausgibst innerhalb der Vorlage oder des Listviews nochmal einen seperaten Listview vom Type Multiobjekt machen.

Darüber kannst du dann ganz normal auf alle Felder zugreifen - auch auf die ID (über we_id) und die URL (über we_path).

Wenn du das so machst, kannst du innerhalb dieses zweiten Listviews auch deine globalen Variablen deklarieren.

Auch dein drittes Problem hat sich damit erledigt. Außerhalb des Listviews vom Type Multiobjekt greifst du auf die Felder des 'Hauptobjektes' zu - innerhalb des Listviews eben auf die Felder des Multiobjektes.

Ich hoffe, dass dir das weiterhilft.

Dass webEdition überhaupt ohne diesen zusätzlichen Listview einen Zugriff auf Felder des Multiobjektes zulässt, ist wahrscheinlich auf Fehlertoleranzen zurückzufühen. Denn das Multiobjektfeld ist ja auch zum Einbinden von mehreren Objektes geeignet und ohn weiteren Listview wüsste dein Code dann gar nicht, auf welches der eingepflegten Multiobjekte er zugreifen müsste.

Viele Grüße
Martin

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

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

Carrear hat geschrieben:Hallo Boris,

vorweg die Frage, welche webEdition Version du hast.
Die neuste Version 6.3.8.0 (SVN-Revision: 6985).
Carrear hat geschrieben:Wenn du in einer Klasse ein Feld vom Type Multiobject hast
Hab ich nicht. Es ist ein ganz "normales", einziges Objekt. Ich habe nie geschrieben dass es Multiobjekt-Felder sind ;)

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon Carrear » Mi 2. Jul 2014, 15:18

Naja, dann würde ich dir gleiches Vorgehen empfehlen nur eben mit einem object listview und nicht mit einem multiobject listview ;)

By the way:
Ich kenne nicht die genauen Anforderungen, aber macht die Zuordnung umgekehrt nicht mehr Sinn? Also einem Hotel werden mehrere Angebote zugeordnet, anstatt jedem Angebot ein Hotel zuzuordnen?

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

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

Carrear hat geschrieben:Naja, dann würde ich dir gleiches Vorgehen empfehlen nur eben mit einem object listview und nicht mit einem multiobject listview ;)
Das bedeutet dann aber quasi eine zusätzliche, eigentlich unnötige Query, da alle Daten die ich brauche ja bereits über das 1. Listview verfügbar sind ...

Ich habe es mir nun, ähm, auf eine etwas direktere Art "geholt":

Code: Alles auswählen

<?php
$rateships = $GLOBALS['lv']->DB_WE->Record['we_Bewertung'];
$hotel_id = $GLOBALS['lv']->DB_WE->Record['we_we_object_1'];
?>
Und: nein. In diesem Projekt nicht, "Angebote" ist ein eigener Bereich wo man ein Hotel auswählen kann ;)

ThomasGoebe

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon ThomasGoebe » Mi 2. Jul 2014, 15:55

Hallo borisbojic,

zu Deiner Ursprungsfrage:

ja, wenn Du in einer Klasse ein Feld des Typs Objekt einer anderen Klasse nutzt und beide Klassen identische Titel haben, gibt es Kollisionen.

Ich löse das so, dass ich die identischen Titel vermeide. D.h. in der Klasse Hotel nutze ich dann ein Präfix oder Suffix für die Feldnamen. Z.B. hotel_Titel oder eben Titel_Hotel

Damit kannst Du die eingebundenen Felder in der listview einfach mit we:field ausgeben.

Es ist natürlich langfristig besser, wenn wir ein Prefix direkt in der Listview angeben können, also z.B. vor die Feldnamen (zuschaltbar) immer ein classX_Titel o.ä. gesetzt wird. Das wäre aber ein Feature Wunsch, der m.E. bisher noch nicht erfasst ist. Trag doch mal ein unter qa.webedition.org

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon borisbojic » Mi 2. Jul 2014, 16:01

Alles klar, vielen Dank. :)

Kann man euch bei der Entwicklung aktiv unterstützen?

Benutzeravatar
JuergenEbbing
webEdition Partner
webEdition Partner
Beiträge: 246
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Ramsdorf
Kontaktdaten:

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon JuergenEbbing » Mi 17. Okt 2018, 15:23

Ich nutze Objekte ähnlich wie Boris.
In meinem Falle Pflege ich Veranstaltungen (Künstler + Bild + Beschreibung) und dazu gibt es mehrere Termine (Datum + Uhrzeit). Die Termine verknüpfe ich mit der Veranstaltung - allerdings auch nicht als Mulitobjekt, sondern als einfaches Objekt.

Wie komme ich an die ID der Veranstaltung, mit der der jeweilige Termin verknüpft ist? An die anderen Variablen kann ich ich ja einfach per we:field kommen.

Ich möchte dann später sowohl eine Liste aller Termine mit Hinweis auf die jeweilige Veranstaltung führen, als auch bei den Veranstaltungen jeweils die zugehörigen Termine auflisten. Das könnte ich dann ja mit einer conditition lösen (die ich im Moment wegen des Feldnamens auch noch nicht weiß).

In der Datenbank steht das Feld als "object_2" - ich kann dies aber nicht als we:field name="object_2" ausgeben. Auch ein we:field type="object" ist ja nirgends dokumentiert funktioniert hier auch nicht. Auch ein we:field name="2" type="int" führt nicht zum Erfolg. Ich stehe da gerade auf dem Schlauch - vielleicht hilft mir da mal jemand runter :lol:

Frohes Schaffen noch!
------------
da bin ich ja mal gespannt,
ob ich neugierig bin
------------

Benutzeravatar
JuergenEbbing
webEdition Partner
webEdition Partner
Beiträge: 246
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Ramsdorf
Kontaktdaten:

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon JuergenEbbing » Do 18. Okt 2018, 13:17

So, ich hab es rausgefunden :D

Hier mal für alle "Mitleser":

Auf der Seite Veranstaltung (Objekt - (Klasse-ID2)) kann ich mit dieser Condition alle Termine auflisten, welche mit der Veranstaltung verknüpft wurden. Zunächst finde ich heraus welche ID die Veranstaltung hat und dann lasse ich nur Termine anzeigen, die mit der entsprechenden Veranstaltung (Datenbankfeld "object_2") verknüpft wurden.

Code: Alles auswählen

<we:setVar to="global" nameto="selfID" from="request" namefrom="we_objectID" striptags="true" />
<we:condition name="condition">
<we:conditionAdd field="object_2" var="selfID" compare="="/>
</we:condition>
<we:listview type="object" classid="3" condition="\$condition"><we:repeat>
In der Liste aller Termine kann ich die Daten der verknüpften Veranstaltung ja ganz einfach via "we:field name" ausgeben, muss dabei aber darauf achten, dass ich bei den unterschiedlichen Klassen keine identischen Feldnamen vergeben habe. Einen Link auf die jeweils verknüpfte Veranstaltung setze ich wie folgt:

ID-der verknüpften Veranstaltung in eine Variable schreiben

Code: Alles auswählen

<we:field name="we_object_2" nameto="veranstaltung" to="global"/>
danach die Url innerhalb des we:object Tags aufrufen

Code: Alles auswählen

<a href="<we:object id="\$veranstaltung"><we:field name="we_path"/></we:object>"></a>
Funktioniert alles prima. Die ID wird also in meinem Fall via "we_object_2" aufgerufen. Allerdings wird die erzeugte URL zur Veranstaltung nicht als SEO-URL ausgegeben. Da weiß ich noch nicht, was ich da noch tun muss, klappt ansonsten auf der Seite.

Ich hoffe das war die korrekte Lösung - falls es einfacher geht, lasst es mich wissen :wink:
------------
da bin ich ja mal gespannt,
ob ich neugierig bin
------------

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

Re: Drei Verständnisfragen rund um Objekte, Aliase, etc

Beitragvon mokraemer » Do 18. Okt 2018, 16:19

Du solltest besser statt

Code: Alles auswählen

<we:setVar to="global" nameto="selfID" from="request" namefrom="we_objectID" striptags="true" />
dies hier schreiben:

Code: Alles auswählen

<we:setVar to="global" nameto="selfID" from="request" namefrom="we_objectID" varType="int" />
Denn die ID ist auf jeden Fall eine Zahl. So kann hier nix schief gehen und dir keiner eine SQL-Bombe setzen.
webEdition-Kern-Entwickler


Zurück zu „DB-/Objektmodul“

Wer ist online?

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