Contao-Camp 2024
Ergebnis 1 bis 27 von 27

Thema: Metamodel Datensatz in Event auswählen

  1. #1
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard Metamodel Datensatz in Event auswählen

    Hallo zusammen,

    würde gerne einen Metamodel Datensatz in einem Event auswählen und anzeigen und bräuchte mal eine Info bzgl. Machbarkeit und Vorgehensweise.

    Konkret geht es darum, dass ich jedem Event eine mm_location zuordnen möchte. Idealerweise durch ein select in der Event Eingabemaske. Im FE Event-Detail soll dann letztendlich eine Karte mit Marker erscheinen.

    In der Event-Detail Ausgabe sollten mir dann folgende Attribute aus mm_locations zur Verfügung stehen:

    Name
    Geolocation (zur Erzeugung der GoogleMaps Karte)
    Detaillink

    Wie würdet ihr an dies Sache ran gehen bzw. hat das schon jemand realisiert?

    Grüße Marco

  2. #2
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    mit "Events" meinst Du sicher die "Contao-Events" -oder?

    Ideen:

    * kleines Modul dafür schreiben - dann kannst Du das in die vorhandene Eingabemaske zaubern

    * die mm_locations als Kind-Tabelle den Events zuordnen - dann musst Du aber im Template eine MM-Abfrage einbauen

  3. #3
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    mit "Events" meinst Du sicher die "Contao-Events" -oder?

    Ideen:

    * kleines Modul dafür schreiben - dann kannst Du das in die vorhandene Eingabemaske zaubern

    * die mm_locations als Kind-Tabelle den Events zuordnen - dann musst Du aber im Template eine MM-Abfrage einbauen
    Könnte man sich auch über die dcaconfig per select den datensatz holen oder reicht das alleine nicht aus?

  4. #4
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von marcohe Beitrag anzeigen
    Könnte man sich auch über die dcaconfig per select den datensatz holen oder reicht das alleine nicht aus?
    das meine ich mit "kleines Modul schreiben" - mit dem DCA hättest Du die Auswahl... dann müssen noch die Werte ins Template geschaufelt werden

  5. #5
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    das meine ich mit "kleines Modul schreiben" - mit dem DCA hättest Du die Auswahl... dann müssen noch die Werte ins Template geschaufelt werden
    Modul ist fertig. Datensätze (in meinem Fall das Titel-Feld) können per select ausgewählt werden. Die id des mm_Datensatzes wird dann in tl_calender_events geschrieben.

    Ich müsste jetzt praktisch eine Abfrage machen, die in mm_locations den Datensatz sucht, wo die ID mit dem des zuvor in tl_calender_events geschriebenen Wert übereinstimmt?

    Kann man das über einen SQL Filter steuern der in Metamodels angelegt wurde? Und dann im Event Seitenlayout eine Metamodel-Liste mit diesem Filter ausgeben?

    Wie kann man über einen SQL Befehl Werte zweier Datenbanken vergleichen?
    Geändert von marcohe (17.06.2017 um 00:03 Uhr)

  6. #6
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von marcohe Beitrag anzeigen
    A) Ich müsste jetzt praktisch eine Abfrage machen, die in mm_locations den Datensatz sucht, wo die ID mit dem des zuvor in tl_calender_events geschriebenen Wert übereinstimmt?

    B) Kann man das über einen SQL Filter steuern der in Metamodels angelegt wurde? Und dann im Event Seitenlayout eine Metamodel-Liste mit diesem Filter ausgeben?

    C) Wie kann man über einen SQL Befehl Werte zweier Datenbanken vergleichen?
    A: http://metamodels.readthedocs.io/de/....html#beispiel

    B: ja (ggf. besser per https://docs.contao.org/books/api/ex...eTemplate.html) + ja

    C: wie meinen?

  7. #7
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    C: wie meinen?
    Bezieht sich auf A).

    Code:
    select id from mm_locations where id = tl_calendar_events.event_location
    irgendwie so inder Art muss ja die Prüfung stattfinden.

    Die Frage ist halt, ob sich der Filter den Wert event_location aus tl_calendar_events der aktuellen Seite schnappen kann wenn wie in B) beschrieben eingebunden?

  8. #8
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von marcohe Beitrag anzeigen
    Bezieht sich auf A).

    Code:
    select id from mm_locations where id = tl_calendar_events.event_location
    irgendwie so inder Art muss ja die Prüfung stattfinden.

    Die Frage ist halt, ob sich der Filter den Wert event_location aus tl_calendar_events der aktuellen Seite schnappen kann wenn wie in B) beschrieben eingebunden?
    ja, kann man => bitte in SQL-Queries einlesen...

  9. #9
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    tl_calendar_events.eventLocation = %Variable%

    Wie bekomme ich denn eine Variable die über arritem im template ausgegeben wird in meine where abfrage siehe oben?

  10. #10

  11. #11
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    also in das %Variable% muss eigentlich der Wert der im Template über

    PHP-Code:
    <? php echo $arrItem['eventLocation'];?>
    ausgegeben wird rein...

    Der SQL Query ist in mm als Filterregel angelegt. Aber SQL kann sich doch nur Werte aus der Datenbank ziehen und nicht welche die in einem Template ausgegeben werden oder?

  12. #12
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von marcohe Beitrag anzeigen
    Aber SQL kann sich doch nur Werte aus der Datenbank ziehen und nicht welche die in einem Template ausgegeben werden oder?
    ... üblicher Weise werden in einem Template die Werte aus der Datenbank ausgegeben...

    ich habe bei den "Info-Häppchen" den Faden verloren "wo" Du bist und "was" Du willst :-(

  13. #13
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Sorry wenn das ganze etwas missverständlich geworden ist.

    Nehmen wir mal ein anderes Beispiel.

    Aus 2 Spalten einer DB werden Werte addiert. Herrauskommt ein neuer Wert, der nicht in der Datenbank steht sondern nur im Template ausgegeben wird.

    Wie könnte mann diesen neuen Wert in eine SQL abfrage packen?

    PS: Kann ein Admin auch gerne als neues Thema in einen passenden Forenbereich verschieben...

  14. #14
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    in dem du genau die zwei Werte in dem Query als Summe berechnest.. MySQL kann auch Mathe https://dev.mysql.com/doc/refman/5.7...#operator_plus

  15. #15
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Ja. Aber nehmen wir an der Wert wird imTemplate berechnet und soll dann im Query weiterverwendet werden. Wie sieht es dann aus?

  16. #16
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    was macht die Berechnung im Template so besonders, dass diese nicht auch (nochmal) im Query gemacht werden kann!?!?

    ggf. https://community.contao.org/de/foru...Auftr%C3%A4ge)

  17. #17
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    http://ecoblack.de/event-detail/dejavu-party.html

    Ganz oben wird der zum Event gehörende Datensatz aus Metamodels ( die ID) ausgegeben.
    Auf diese ID muss gefiltert werden damit auf der Karte ganz unten nur noch ein Marker erscheint.

    Berechnung war vllt doch kein gutes Beispiel...

    An die Möglichkeit eines Kleinstauftrages habe ich auch schon gedacht. Werde ich bei nächster Vorstandsitzung mal Kassierer fragen ;-)

  18. #18
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Soo habe mir die Mühe gemacht einen Screenshot beider Tabellen beizufügen siehe Anlage.
    Vllt wird es dann etwas klarer was ich machen will.

    Tabelle 1 (tl_calendar_events) > relevante Spalte "eventLocation" (wird per Select im Modul Events ausgewählt u. speichert die "id" des mm datensatzes unter Spalte "eventLocation" ab)
    Tabelle 2 (mm_event_locations) > relevante Spalte "id"

    Im Frontend wird ausgegeben:

    Modul: Event-Leser
    Modul: Metamodel-Liste (Mit ausgewähltem Filter -> eigenes SQL) > Liste soll nur 1 Datensatz anzeigen > Wo "id" mit im FE ausgegebenem Wert aus "eventLocation" übereinstimmt.

    Filter eigenes SQL sieht wie folgt aus:

    Code:
    SELECT mm_event_locations.id FROM mm_event_locations JOIN tl_calendar_events on tl_calendar_events.eventLocation = mm_event_locations.id where mm_event_locations.id = tl_calendar_events.eventLocation
    Mit diesem Filter werden mir aber logischerweise alle Datensätze angezeigt, die einen "Partner" in tl_calendar_events haben.

    Kann mir jemand verständlich erklären wie ich nur den mm Datensatz ausgeben kann, der zu dem im FE ausgegebenem Wert aus "eventLocation" passt?
    Angehängte Grafiken Angehängte Grafiken

  19. #19
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    mit

    Code:
    SELECT mm_event_locations.id FROM mm_event_locations 
    WHERE mm_event_locations.id = 4
    sollte auf der Eventseite die Location "4" ausgeben...

    statt der 4 musst Du die aktuelle Location-ID des Readers ermitteln...

    zur Verfügung hast Du den Alias des Events aus der URL (siehe Beispiele in der BE-Hilfe)...

    damit in die Tabelle tl_calendar_events und id ermitteln und statt der "4" dem Query übergeben...

    Da MM bei den Queries immer nur die id auswertet, kannst Du den ersten Select "SELECT mm_event_locations.id FROM mm_event_locations..." auch gleich weg lassen - siehe http://metamodels.readthedocs.io/de/...schaft-filtern die vereinfachte Form

    Nachtrag: habe gesehen, dass du bei der MM-Tabelle die Geokoordinaten hast - wenn das in zwei Spalten steht, kannst Du auch die Umkreissuche als FE-Filter einsetzen...

  20. #20
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    sollte auf der Eventseite die Location "4" ausgeben...
    Ja tut es


    Zitat Zitat von zonky Beitrag anzeigen
    statt der 4 musst Du die aktuelle Location-ID des Readers ermitteln...

    zur Verfügung hast Du den Alias des Events aus der URL (siehe Beispiele in der BE-Hilfe)...

    damit in die Tabelle tl_calendar_events und id ermitteln und statt der "4" dem Query übergeben...
    HTML-Code:
    SELECT mm_event_locations.id FROM mm_event_locations where mm_event_locations.id = (SELECT eventLocation FROM tl_calendar_events WHERE alias = {{param::get?name=auto_item}})
    In der Art? Scheint aber noch fehlerhaft zu sein... Wir nichts ausgegeben.

  21. #21
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    mach mal

    Code:
    SELECT mm_event_locations.id FROM mm_event_locations
    WHERE mm_event_locations.id = (SELECT eventLocation FROM tl_calendar_events WHERE alias = {{param::get?name=auto_item}})xxx
    dann kommt eine Fehlermeldung mit dem Query - den kannst Du dann "debuggen" bzw. in phpMyAdmin testen ;-)

  22. #22
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    HTML-Code:
    SELECT mm_event_locations.id FROM mm_event_locations
    WHERE mm_event_locations.id = (SELECT eventLocation FROM tl_calendar_events WHERE alias = {{param::get?name=auto_item}})
    War doch richtig. Der Weg über den Seitenalias war die zündende Idee! Danke!!

  23. #23
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    und nu teste mal

    Code:
    SELECT eventLocation as id FROM tl_calendar_events
    WHERE alias = {{param::get?name=auto_item}}

  24. #24
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    und nu teste mal

    Code:
    SELECT eventLocation as id FROM tl_calendar_events
    WHERE alias = {{param::get?name=auto_item}}
    Gleiches Ergebnis. Perfekt.
    d.h. die mm_ tabelle muss im query nicht mehr angegeben weil er sich die id automatisch immer in der mm_tabelle sucht?

  25. #25
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von marcohe Beitrag anzeigen
    Gleiches Ergebnis. Perfekt.
    d.h. die mm_ tabelle muss im query nicht mehr angegeben weil er sich die id automatisch immer in der mm_tabelle sucht?
    Bingo!

  26. #26
    Contao-Fan
    Registriert seit
    20.10.2014.
    Ort
    Freiburg
    Beiträge
    470

    Standard

    Um das ganze Rund zu kriegen.

    Ist es umgekehrt Möglich auf der mm_Detailseite ein Eventliste einzubinden und diese auf die location der Detailseite zu filtern.

    Müsste ich dann den SQL-Query in das entsprechend Event-Listen Template einbinden? Arg aufwändig oder machbar?

  27. #27
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.682
    User beschenken
    Wunschliste

    Standard

    sicher ist das machbar...

    Ideen zur Umsetzung:

    * über Event-Hook filtern
    * eigene Abfrage der Event-Tabelle erstellen
    * in MM das Ticket "Alien-Tables" (https://github.com/MetaModels/core/issues/581) - also "Fremdtabellen" per MM - finanzieren bzw. sich um die Finanzierung oder Programmierung kümmern...

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •