Inner join

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
domowdenis
Сообщения: 19
Зарегистрирован: 2018.12.24, 17:29

Inner join

Сообщение domowdenis » 2018.12.24, 17:34

Добрый день всем. Возникла необходимость выполнить такой запрос

SELECT * FROM product
INNER JOIN category ON category.category_id = product.product_category
INNER JOIN category as parent_category ON parent_category.category_id = category.category_parent_id
WHERE category.category_alias = "some alias"

В таблице категорий - некоторые категории имею родительскую категорию, реализованую ч/з доп. поле category_parent_id

Т.е. по сути я два раза обращаюсь к одной и той же таблице.,Но проблема в чем - я не понимаю как указать AS

$query = Product::find()
->joinWith('category', 'category.category_id = product.product_category', 'INNER JOIN')
->andWhere(['category.category_alias' => $category_alias]);

$pages = new Pagination(['totalCount' => $query->count(), 'pageSize' => '5', 'forcePageParam' => false, 'pageSizeParam' => false]);

$products = $query->offset($pages->offset)
->limit($pages->limit)
->asArray()
->all();

return $this->render('index', [
'products' => $products,
'pages' => $pages,
]);

andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: Inner join

Сообщение andku83 » 2018.12.26, 02:29

Код: Выделить всё

        $query = Product::find()
            ->innerJoinWith(['category category', 'category.relationNameParent parent_category']) // relationNameParent - имя связи к родителю у модели Category
            ->andWhere(['category.category_alias' => $category_alias]);
или

Код: Выделить всё

        $query = Product::find()
            ->innerJoinWith('category category')
            ->innerJoin('category parent_category', 'parent_category.category_id = category.category_parent_id')
            ->andWhere(['category.category_alias' => $category_alias]);

Ответить