Очень сложный запрос

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
GroZa
Сообщения: 180
Зарегистрирован: 2012.10.16, 17:00
Откуда: Сочи
Контактная информация:

Очень сложный запрос

Сообщение GroZa »

Есть типичная задача вывода продукции с фильтром по цене.
Решается просто:

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

$query = Product::find();
$query->andWhere('price >= :min_price', [':min_price' => 10000]);
$query->andWhere('price <= :max_price', [':max_price' => 99999]);
$provider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 12]]);
Но тут поставили задачу усложнить.
У разных пользователей на каждый товар могут быть разные скидки %.
Для каждого Product есть hasMany модель ProductUserDiscount (product_id, user_id, discount (0-100)).
В общем при фильтрации по цене (код выше) нужно как-то подгружать ProductUserDiscount для текущего пользователя и, для тех товаров где запись есть,
использовать product.price - product.price * productuserdiscount.discount / 100, в противном случае просто price.

Вопрос: это вообще решается как-то с помощью ActiveRecord или запросов?
Per aspera ad astra.
Prosto_Tok
Сообщения: 132
Зарегистрирован: 2015.09.30, 20:12

Re: Очень сложный запрос

Сообщение Prosto_Tok »

Составь полный запрос на SQL, тогда будет понятнее и смогут помочь тебе.
Ответить