Ich habe diese, um herauszufinden versucht, (ich glaube wirklich einfach), was mehrere Tage:SQL-Abfrage CakePHP Übersetzung
Ich habe drei Tabellen mit diesen Feldern:
- alumnes: id , nomcognoms
- grups: id
- alumnesgrups: id, alumne_id (verwandt mit Alumnes.id) und grup_id (verwandt mit Grups.id). Dies ist eine Pivot-Tabelle (Join-Tabelle, relationale Tabelle ...)
Meine Frage ist:
Was soll ich Code in AvadiariesController.php, wenn ich eine Auswahlbox auffüllen möchten (in einem add.ctp) mit den Ergebnissen aus dieser Abfrage:
SELECT
alumnes.nomcognoms
FROM
alumnes_grups
INNER JOIN grups ON
alumnes_grups.grup_id = grups.id
INNER JOIN alumnes ON
alumnes_grups.alumne_id = alumnes.id
WHERE
alumnes_grups.grup_id = '16-17 2nB'
ORDER BY
alumnes.nomcognoms
Kann ich ein Anzeigefeld aus einer anderen Tabelle? Wie kann ich "Name" anstelle von "ID" sehen?
Benutzer Rechnung vorgeschlagen freundlich etwas, das ich (richtig?) Neu geschrieben zu:
$alumnesGrups = $this->Avadiaries->AlumnesGrups->Alumnes->find('list',
['fields' => ['Alumnes.nomcognoms'], // keep the alias consistent with whatever you define in the join
'joins' => [['table' => 'alumnes',
'alias' => 'Alumnes',
'type' => 'INNER',
'conditions' => ['Alumnes.id' => 'AlumnesGrups.alumne_id']],
// mimic the above to join the other table
['table' => 'grups',
'alias' => 'Grups',
'type' => 'INNER',
'conditions' => ['AlumnesGrups.grup_id' => '16-17 2nB'],
'order' => ['Alumnes.nomcognoms' => 'ASC']]
]
]
);
Jetzt add.ctp gibt keinen Fehler, aber diese Bedingung nicht angewendet wird:
'conditions' => ['AlumnesGrups.grup_id' => '16-17 2nB']
Ich brauche nur diesen Startpunkt, damit ich noch ein paar andere Dinge herausfinden kann.