Ergebnis 1 bis 2 von 2

Thema: 3 Tabellen miteinander verknüpfen (2 Tabellen + 1 Kindtabelle)

  1. #1
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard 3 Tabellen miteinander verknüpfen (2 Tabellen + 1 Kindtabelle)

    Ich bin auf der suche nach einer Möglichkeit die Ausgabe
    von drei Tabellen zu vereinen.

    Aufgabe:

    Es gibt einen Themenbereich der verschiedene Produkte beinhaltet.
    Wähle ich ein Themenbereich aus soll neben allgemeinen Produktinformationen
    auch themenspezifische Inhalte erscheinen.

    Lösungsansatz:

    Eine Tabelle mit Themen (mm_themen)
    Eine Tabelle mit Produkten (mm_produkt)
    Eine Kindtabelle von mm_produkt mit den themenspezifischen Inhalten (mm_produktthemen)

    Die Produktausgabe nach Themen habe ich mit einem SQL-Befehl erreicht.

    Code:
    SELECT * FROM {{table}} WHERE id IN (SELECT pid FROM mm_produktthemen WHERE th_produktThemenAuswahl=(SELECT id FROM mm_themen WHERE th_themenName={{param::get?name=auto_item}}));
    Nun versuche ich die Produktspezifischen Inhalte auszugeben.

    Code:
    SELECT * FROM {{table}} WHERE th_hotelThemenAuswahl IN (SELECT id FROM mm_themen WHERE th_themenName={{param::get?name=auto_item}});
    Mit SQL-Lösungen bekommt man zwar das Ergebnis gefiltert aber die themenspezifischen Inhalte
    werden bei einer Listendarstellung nicht zu jedem Produkt zugeordnet ausgegeben.

    Ich habe schon viel in der Community gesucht. Lösungen mit referenced items habe
    ich keine finden können, die zu diesem Problem passt. Hinzu kommt noch das Problem
    der Mehrsprachigkeit.

    Problem:

    Wie kann ich die Kindtabelle (mm_produktthemen) im Elterntemplate (mm_produkt) passend ausgeben
    in Abhängigkeit zum Themenbereich (mm_themen) der gerade selektiert wurde?

    - mm_produktthemen hat ein Select von mm_themen (Alias == Themenbereich auto_item)
    - mm_produktthemen ist eine Kindtabelle von mm_produkt (pid == id)

  2. #2
    Contao-Nutzer
    Registriert seit
    29.09.2010.
    Ort
    Oberstdorf
    Beiträge
    78

    Standard

    Nur der Vollständigkeit halber:

    Code:
    <?php
    	$objMetaModel = \MetaModels\Factory::byTableName('mm_produkthemen');
    	$objFilter = $objMetaModel->prepareFilter(10, array());
    	$objFilter->addFilterRule(new \MetaModels\Filter\Rules\SimpleQuery('SELECT id FROM mm_produktthemen WHERE pid=?', $arrItem['raw']['id']));
    	$objItems = $objMetaModel->findByFilter($objFilter);
    	$themen = $objItems->parseAll('html5', $objMetaModel->getView(9));
    ?>
    Filter 10 beschränkt lediglich die Ausgabe mit einem einfachen SQL.

    Code:
    SELECT id FROM mm_produktthemen WHERE th_produktThemenAlias=(SELECT th_themenAlias FROM mm_themen WHERE th_themenName={{param::get?name=auto_item}})

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
  •