Viac násobný self-join Nette\Database\Table\Selection

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tino415
Člen | 46
+
0
-

Potrebujem spraviť viac násobný self-join, intuitívne ma napadlo napísať toto:

<?php
        $query = $this->getTable()
            ->select(implode(', ', [
                'parent.original_id AS city_id',
                'parent.parent.original_id AS destination_id',
                'parent.parent.parent.original_id AS region_id'
            ]))
            ->where('category.name', 'hotel')
            ->where('(suggester_item.original_id = 0 AND suggester_item.original_name = ?) OR suggester_item.original_id = ?',
                $hotel_original_name,
                $hotel_original_id
            );
?>

ale vracia mi to:

	SELECT
		`parent`.`original_id` AS `city_id`,
		`parent`.`original_id` AS `destination_id`,
		`parent`.`original_id` AS `region_id`
	FROM `suggester_item`
	LEFT JOIN `suggester_category` AS `category`
		ON `suggester_item`.`category_id` = `category`.`id`
	LEFT JOIN `suggester_item` AS `parent`
		ON `parent`.`parent_id` = `parent`.`id`
	WHERE (`category`.`name` = ?)
		AND ((`suggester_item`.`original_id` = 0 AND `suggester_item`.`original_name` = ?)
			OR `suggester_item`.`original_id` = ?)

nič iné ma nenapadlo, možno ešte si vrátiť prvý a použiť related, ale rád by som to mal v jednom
query…