Ergebnis 1 bis 5 von 5

Thema: Contao mit mehrren ptables?

  1. #1
    Contao-Nutzer
    Registriert seit
    10.03.2016.
    Beiträge
    39

    Standard Contao mit mehrren ptables?

    Hallo Community,

    derzeit arbeite ich unter Contao 3.5 an einem Frontend-Modul für die Verwaltung von Prüfungen.
    Teilnehmer (Contao Frontend-Mitglieder) können sich zu Prüfungen anmelden, jede Prüfung hat einen Prüfer, etc.

    Hierfür habe ich die folgende Tabellenstruktur angelegt
    - tl_exam: enthält die Prüfungen
    - tl_exam_perform (Kindtabelle von tl_exam): enthält die IDs der Teilnehmer, Prüfer etc.

    Nun möchte ich erst mal eine Liste aller angemeldeten Prüfungen mit zugehörigen Namen der Teilnehmer (tl_member) ausgeben.
    Alle angemeldeten Prüfungen kriege ich über
    PHP-Code:
    $objPerform = \ExamPerformModel::findAll();        
                    
    $exams =$objPerform->getRelated('examid'); 
    Aber wie komme ich nun an Vor- und nachnamen der Nutzer?
    Um zusätzlich diese Daten einzubeziehen, bräuchte ich doch eine zweite ptable? oder habe ich das Prinzip hier irgendfwie falsch verstanden.
    Gibt es hier eine Lösung, die one SQL-abfrage auskomt?

    Es wäre nett, wenn mir jemand hier kurz auf die Sprünge helfen könte.

    Vielen Dank und viele Grüße
    Snape
    Snape

  2. #2
    Contao-Fan
    Registriert seit
    27.06.2010.
    Beiträge
    539

    Standard

    PHP-Code:
    $objPerform = \ExamPerformModel::findAll(); 
    Nun hast du eine `Collection` (das ist eine Klasse, die findest du unter diesem Namen).
    Jetzt kannst du über die Models innerhalb dieser Collection iterieren und dir jeweils den Namen ausgeben lassen
    PHP-Code:
    if (null !== $objPerform) {
      while (
    $objPerform->next()) {
         
    // getRelated ist nur für ein Model gültig, ein Model hast du innerhalb der while-Schleife auch. vorher war $objPerform eine Collection
         // damit getRelated auch klappt, muss innerhalb der DCA-Konfiguration bei memberid auch ein foreignKey o.vgl. gesetzt sein.
        
    $member $objPerform->getRelated('memberid');
        
    /** @var \MemberModel $member **/
        
    echo $member->firstname;
      }

    Gibt natürlich auch andere Wege, aber so viel zu den Basics

  3. #3
    Contao-Nutzer
    Registriert seit
    10.03.2016.
    Beiträge
    39

    Standard

    Guten Morgen tl_richard_user,

    danke für die Antwort. So geht es tatsächlich. Habe nun einfach meine member-Tabelle als foreignkey der memberid angegeben. Was ich nicht verstehe: Wozu ist das ganze Konstrukt mit ptable und ctable dann überhaupt gut, wenn es über die foreign keys ja auch einfach so zu gehen scheint?

  4. #4
    Contao-Fan Avatar von Sioweb
    Registriert seit
    12.08.2011.
    Ort
    Düsseldorf
    Beiträge
    405
    User beschenken
    Wunschliste

    Standard

    Ho!

    Das ist bspw. für tl_content super. Die kann als pTable ja unter anderem Artikel, oder News nutzen. So kann Contao die selbe Tabellenstruktur nutzen ohne dass diese für alles mögliche dupliziert werden muss. Artikel müssen dann nur noch bestimmen "Gib mir alle tl_content mit ptable gleich article aus"
    Grüße Sascha W. @Sioweb
    schadebalken.de | zurück-zu-montag.de
    +++ Programmierer von Change-Lok erfasst worden +++

  5. #5
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Über die ptable ctable Relationen löscht contao u.a. die dazugehörigen Kinder, wenn ein Elternelement gelöscht wird.

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
  •