SQl-Abfrage für ForeignKey

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • jayalai
    Contao-Nutzer
    • 20.06.2010
    • 3

    #1

    SQl-Abfrage für ForeignKey

    Hallo Leute,

    Ich habe ein eigenes Modul geschrieben. Es wird eine Art Portfolio-Gallerie.
    Jede angelegte Gallerie hat eine eigene Navigation die angelegt werden kann.

    Mein Problem ist jetzt: Jedes angelegte Element in einer Gallerie soll eine Auswahlmöglichkeit der angelegten Navigationspunkte haben. Sprich ich kann mir selbst zusammenklicken unter welchem Navigationspunkt das Element zufinden sein wird.

    Dazu möchte ich im Prinzip die Navigationspunkte einer Gallerie nochmals als Auswahlmöglichkeit in dem Element bereitstellen.

    Mein Ansatz war das über den foreignKey in der PHP-Datei unter DCA zu lösen.
    Das Problem ist, dass der Rückgabewert mir alle Navigationspunkte von allen Gallerien zurückgibt.

    Ich müsste irgendwie diese Abfrage da rein bekommen:

    SELECT p.type
    FROM tl_portfolio_type AS p , tl_portfolio_category AS q
    WHERE p.pid = q.id
    AND q.id = 1;

    Die liefert mir das gewünschte Ergebnis.

    Geht das? Oder gibts da ein bessere Alternative.
    Google sagt mir leider nichts, bzw. vll such ich falsch.

    Für einen guten Ansatz wär ich Euch sehr dankbar!
  • jayalai
    Contao-Nutzer
    • 20.06.2010
    • 3

    #2
    Neuer Ansatz

    Hi,

    Für alle die ein ähnliches Problem haben.
    Habe einen neuen Ansatz. Ich kann natürlich auch das ganze so gestalten:

    'class' => array
    (
    'label' => &$GLOBALS['TL_LANG']['tl_portfolio_item']['class'],
    'inputType' => 'checkbox',
    'search' => true,
    'eval' => array('mandatory'=>true, 'maxlength'=>64, 'multiple'=>true),
    'default' => array("Wert1", "Wert2")
    ),

    So nun frage ich aber, wie kann ich 'default' ein Array übergeben?

    Kommentar

    • jayalai
      Contao-Nutzer
      • 20.06.2010
      • 3

      #3
      [GELÖST]

      So für alle Anfänger in Sachen "eigenes Modul erstellen".

      Die Lösung ist folgende:


      Für das 'options_callback' wird die Methode "getCategories aufgerufen"

      PHP-Code:
      public function getCategories(DataContainer $dc)
          {
              $objClass = $this->Database->prepare(
              "SELECT type
              FROM tl_portfolio_type
              WHERE pid = ?;"
              )->execute($dc->activeRecord->pid);
      
               // noch mehr code
          } 
      
      Die Datenbankabfrage konnte ich auch vereinfachen.
      Was ich nicht wusste, man kann ein DataContainer mitübergeben. Dann kann man über
      $dc->activeRecord->pid die ID des Elternelementes auslesen...

      Somit werden nur die Navigationspunkte der angelegten Gallerie bzw. des Elternelementes angezeigt.

      HF.

      Kommentar

      Lädt...