@EVOSandru6

Как в Yii2 получить принадлежность Товара от родителя категории, на которую он ссылкается?

Добрый день,

Есть 2 таблицы -

products

.id
.name
.categoryid

category (nested set)

.id
.name
.lft
.rgt
.depth
.parent_id

В модели Products есть отношение:
public function getCategory()
    {
        return $this->hasOne(Category::className(), ['id' => 'category_id']);
    }


Т.е. сейчас я могу получить только товары определенной категоии:

$model = Products::findPublished()->andWhere([
            'category_id'=>$cid
        ]);


Как быть, если например мой товар закреплен за категорией * Бутафорные Микроорганизмы, А пользователь выбрал * Микроорганизмы.

Хочу, чтобы при данном выборе выводились все товары, прикрепленные непосредственно к данной категориии и прикрепленные к дочерним элементам.
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
qonand
@qonand
Software Engineer
1. Получаете значения левого и правого ключа выбранной категории с помощью запроса:
SELECT
	lft,
	rgt
FROM
	category
WHERE
	id = <id>


2. Выбираете все категории входящие в диапазон ключей и все товары входящие в выбранные категории
SELECT
	*
FROM
	products
WHERE
	category_id IN (
		SELECT
			id
		FROM
			category
		WHERE
			lft >= <left_key>
		AND rgt <= <right_key>
	)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы