我一直在試圖找出了好幾天這個(我想很簡單的)事情:SQL查詢來CakePHP的翻譯
我有三個表具有以下字段:
- alumnes:ID ,nomcognoms
- grups:ID
- alumnesgrups:ID,alumne_id(與Alumnes.id)和grup_id(相關Grups.id)。這是一個透視表(連接表,關係表...)
我的問題是:
我應該代碼AvadiariesController.php如果我想填充一個選擇框(在add.ctp)從這個查詢結果:
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
我可以從另一個表顯示領域? 我怎樣才能看到'名字'而不是'id'?
用戶Bill好心建議我的東西重寫(正確?)到:
$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']]
]
]
);
現在add.ctp沒有給出錯誤,但並未被應用於此條件:
'conditions' => ['AlumnesGrups.grup_id' => '16-17 2nB']
我只需要這個起點,所以我可以找出其他一些東西。