Добрый день всем. Возникла необходимость выполнить такой запрос
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,
]);
Inner join
Re: Inner join
Код: Выделить всё
$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]);