Přejmenování tabulky ve vícenásobném JOINu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- thorewi
- Člen | 84
Zdravím,
mám tento kód:
$this->courses->findAll()->select('course.*, tutor.name AS tutor, COUNT(tutor.course:id) AS count')->order('created DESC')
který mi vygeneruje
SELECT `course`.*, `tutor`.`name` AS `tutor`, COUNT(`course`.`id`) AS `count`
FROM `course`
LEFT JOIN `tutor` ON `course`.`tutor_id` = `tutor`.`id`
LEFT JOIN `course` ON `tutor`.`id` = `course`.`tutor_id`
ORDER BY `created` DESC
LIMIT 20
OFFSET 0
což je to co chci, akorát tam mám dvakrát tabulku course a to způsobí chybu, bylo by potřeba tam přidat „AS course2“, myslel jsem, že toto dělá Nette samo. Můžu to nějak obejít?
- enumag
- Člen | 2118
V současné době ne. Problém absence možnosti aliasování tabulek v joinech jsem reportoval už dávno, bez odezvy.
EDIT: V tvém případě to nevadí, protože to uděláš takhle:
$courses = $this->courses->findAll()->order('created DESC');
foreach ($courses as $course) {
$course->tutor->name;
$course->tutor->related('course')->count('*');
}
Editoval enumag (12. 11. 2012 7:56)