我一直在试图找出了好几天这个(我想很简单的)事情: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']
我只需要这个起点,所以我可以找出其他一些东西。