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
+
0
-

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
+
0
-

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)