Nette řazení podle dvou cizích tabulek
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- David Klouček
- Člen | 57
Mám tabulky category a product. U podkategorie je nastavenej sloupec parent_id, kde odkazuje na nadřazenou kategorii. Já mam výpis výrobků a potřebuju ho seřadit nejprve podle názvu hlavní kategorie a pak podkategorie, aby se v tom líp hledalo, vypisuju to ve formátu:
název produktu | kategorie > podřazená kategorie
Dotaz:
<?php
$db->table('product')
->order('category:category.name ASC, category.name ASC')
->fetchAll();
?>
Ale vygeneruje se mi:
SELECT `product`.`id`, `product`.`number`, `product`.`name`, `product`.`price`,
`product`.`category_id`, `category_ref`.`name`, `category`.`name`
FROM `product`
LEFT JOIN `category` ON `product`.`category_id` = `category`.`id`
LEFT JOIN `category` AS `category_ref` ON `category`.`id` = `category_ref`.`parent_id`
ORDER BY `category_ref`.`name` ASC, `category`.`name` ASC;
To je špatně – category_ref
.name
(hlavní
kategorie) mi u každýho řádku vrací NULL. Správnej výsledek dostanu až
když druhej join upravim na:
LEFT JOIN `category` AS `category_ref` ON `category_ref`.`id` = `category`.`parent_id`
Já chci ale používat NDBT. Jak to vyřešit?
Editoval David Klouček (18. 6. 2015 20:25)
- David Klouček
- Člen | 57
David Matějka:
Funguje, dík. Jen jsem to přehodil:
->order('category.parent.name ASC, category.name ASC')