Тема: Join запросы
Здравсвуйте! Столкнулся со следующей проблемой:
Начал писать блок контроллер, который получает все товары из категории, имеющие также определенную спецкатегорию, в которой находится пользователь. Надеюсь, нормально объяснил.
// $current_dir->id - id текущей директории
// $specdir_id - id спецкатегории
$products = \RS\Orm\Request::make()
->from(new \Catalog\Model\Orm\Product, 'P')
->join(new \Catalog\Model\Orm\Dir, 'Dir.id = P.maindir', 'Dir')
->join(new \Catalog\Model\Orm\Xdir(), 'Xdir.product_id = P.id', 'Xdir' )
->where(['P.maindir' => $current_dir->id])
->where(['Xdir.dir_id' => $specdir_id])->object();
Если вывести с помощью echo, то запрос SQL будет выглядить следующим образом:
SELECT * FROM `homestead`.`iqay_product` as P INNER JOIN `homestead`.`iqay_product_dir` as Dir ON Dir.id = P.maindir INNER JOIN `homestead`.`iqay_product_x_dir` as Xdir ON Xdir.product_id = P.id WHERE (`P`.`maindir` = '2') AND (`Xdir`.`dir_id` = '26')
Запустив его в SQL я получаю в ответ 1 - 2 поля, в зависимости от спецкатегории, т.е. все происходит как надо.
Но сам запрос через ORM при получении объектов товаров, почему-то в свойство alias подставляет alias текущей категории, где вызывается блок контроллер.
Например: Категория Лазерные комплексы Raylogic 11G с алиасом lazernye-kompleksy-raylogic-11g. В нем товар, который также имеет спецкатегорию. Товар: Лазерный комплекс Raylogic (Рэйлоджик) 11G 1610 Лайт с алиасом lazernyy-kompleks-raylogic-reylodzhik-11g-1610-layt. Т.е. алиас неверны, то и ссылка строится кривая при использовании метода $product->getUrl(). В ответ получаю http://joxi.ru/brRJzBMHJVwK4r. Все смешанно
Помогите составить корректный запрос, или, возможно, есть уже встроенные методы, которые я проглядел.