Ergebnis 1 bis 10 von 10

Thema: Elterntabelle -> Kindtabelle -> "Enkeltabelle": Abfrage von Daten der Elterntabelle?

  1. #1
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard Elterntabelle -> Kindtabelle -> "Enkeltabelle": Abfrage von Daten der Elterntabelle?

    Hallo miteinander,

    entweder stehe ich einfach nur auf dem Schlauch, oder die Sache ist wirklich nicht so trivial, wie ich dachte:

    Szenario:

    MM1: Elterntabelle
    MM2: Kindtabelle
    MM3: "Enkeltabelle"

    Wenn ich im FE Template von MM2 Daten aus MM1 anzeigen lassen möchte, kann ich das ja hiermit realisieren:
    PHP-Code:
    $child $arrItem['raw'];
    $parent = \MetaModels\Factory::byTableName('mm_parents');
    $item $parent->findById($child['pid']); 
    Doch was muss man tun, um im FE Template von MM3 Daten aus MM1 anzeigen zu lassen?

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

    Standard

    wie würdest Du denn die Sache in phpMyAdmin in einem Query lösen?

    * wenn Du von "mm_gandchild" deine Daten im Template ausgeben lässt, hast du die pid as pid_child des Datensatzes
    * damit in "mm_child" und id = pid_child wiederum die pid as pid_parent
    * damit in "mm_parent" und id = pid_parent

  3. #3
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    wie würdest Du denn die Sache in phpMyAdmin in einem Query lösen?

    * wenn Du von "mm_gandchild" deine Daten im Template ausgeben lässt, hast du die pid as pid_child des Datensatzes
    * damit in "mm_child" und id = pid_child wiederum die pid as pid_parent
    * damit in "mm_parent" und id = pid_parent
    Ich hangele mich bei sowas normalerweise durch diverse Forenbeiträge, Beispiele und Tutorials, in der Hoffnung alles soweit zu verstehen, dass ich es entsprechend anpassen kann.
    Hab auch schon brav hier nachgesehen: http://metamodels.readthedocs.io/de/...odel-interface

    Die Verkettung ist schon klar, aber wie man das dann im Template auflösen muss, leider so gar nicht.

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

    Standard

    wenn Du den Weg gehen willst, dann eben 2x nacheinander die jeweiligen Parents abfragen...

    ggf. hilft das weiter: https://de.contaowiki.org/MetaModels...ferenced_items

    kannst auch den Query direkt schreiben \Database::...

  5. #5
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    Das bezieht sich ja doch auf ein gegebenes Attribut – ich habe aber MM3 in MM2 in MM1. Also keine Auswahlfelder innerhalb der Models, sondern Kindtabellen, bei denen Elterntabellen vorhanden sind.

    Bildschirmfoto 2016-11-11 um 14.59.23.png

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

    Standard

    war ja auch nur als Analogie gemeint... es gibt mehrere Möglichkeiten - um bei Deinem Vorgehen zu bleiben sollte doch so was gehen

    PHP-Code:

    $grandchildItem 
    $arrItem['raw'];

    $child     = \MetaModels\Factory::byTableName('mm_child');
    $childItem $parent->findById($grandchildItem['pid']);

    $parent     = \MetaModels\Factory::byTableName('mm_parent');
    $parentItem $parent->findById($childItem['pid']); 

  7. #7
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    war ja auch nur als Analogie gemeint... es gibt mehrere Möglichkeiten - um bei Deinem Vorgehen zu bleiben sollte doch so was gehen

    PHP-Code:

    $grandchildItem 
    $arrItem['raw'];

    $child = \MetaModels\Factory::byTableName('mm_child');
    $childItem $parent->findById($grandchildItem['pid']);

    $parent = \MetaModels\Factory::byTableName('mm_parent');
    $parentItem$parent->findById($childItem['pid']); 
    In der Zwischenzeit viel rumprobiert, da ich mich nicht so leicht geschlagen geben wollte.
    Hab nun im Grunde genau das gemacht
    Funktioniert wunderbar. Danke für die Denkanstöße!

    EDIT:

    Da byTableName als deprecated ausgegeben wird, habe ich das nun so gelöst:

    PHP-Code:
    <?php
      $container 
    $GLOBALS['container']['metamodels-service-container'];
      
    $factory $container->getFactory();
    ?>

    <?php if (count($this->data)): ?>
      <?php foreach ($this->data as $arrItem): ?>

      <?php

        $grandchild 
    $arrItem['raw'];
        
    $child $factory->getMetaModel('mm_child');
        
    $item $child->findById($grandchild['pid']);

        
    $getChildPid $item->parseValue('pid');
        
    $childPid $getChildPid['raw']['pid'];

        
    $parent $factory->getMetaModel('mm_parent');
        
    $parentItem $parent->findById($childPid);

        
    // Example: Get the parent's title
        
    $parentTitle $parentItem->parseAttribute('title');

        echo 
    $parentTitle['raw'];
      
    ?>

      <?php endforeach; ?>
    <?php 
    endif; ?>
    Geändert von d23 (11.11.2016 um 14:41 Uhr)

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

    Standard

    nochmal ein kleiner Einschub: die Relation per "Kind-Tabelle" ist häufig nicht die beste Variante... das kann man aber nur anhand der Daten bewerten

  9. #9
    Contao-Nutzer
    Registriert seit
    18.02.2010.
    Beiträge
    163

    Standard

    Zitat Zitat von zonky Beitrag anzeigen
    nochmal ein kleiner Einschub: die Relation per "Kind-Tabelle" ist häufig nicht die beste Variante... das kann man aber nur anhand der Daten bewerten
    Das ist mir bewusst. Habe sowas schon mal in ähnlicher Ausführung machen müssen – da konnte das aber auch anders gelöst werden. Bei der aktuellen Geschichte ist es aufgrund der Datenstruktur leider so noch am einfachsten.
    Bin gespannt wie das ganze am Ende performance-technisch aussieht.

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

    Standard

    Zitat Zitat von d23 Beitrag anzeigen
    Da byTableName als deprecated ausgegeben wird,
    korrekt - siehe http://metamodels.readthedocs.io/de/...tory-interface

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
  •