запрос к БД

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

запрос к БД

Сообщение omhed »

Здравствуйте.
Помогите, не могу разобраться... казалось мелочь, а я завис...
есть такой запрос:

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

$result = Category::find()->with('category.products')->where("$field = $id")->orderBy(['id'=>SORT_DESC])->all();
он отлично работает.
мне нужно сделать фильтрацию по цену (таблица products). В запросе вверху поле where - идет выборка с таб. categories

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

$result = Category::find()->with('category.products')->where("$field = $id, 50 < products.price < 300")->orderBy(['id'=>SORT_DESC])->all();
- не работает,
Как правильно сделать запрос???
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: запрос к БД

Сообщение caHek2x »

то есть в чистом sql по вашему условия через запятую пишутся ?
а это: "50 < products.price < 300" вы гдето видели ?

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

->where('AND', [$field => $id], ['>', "products.price", 50], ['<', "products.price", 300])
ну и конечно же joinWith добавить ... вы наверно решили что with достаточно, но у него другая роль ...
omhed
Сообщения: 4
Зарегистрирован: 2017.03.23, 17:45

Re: запрос к БД

Сообщение omhed »

спасибо!
может я что то не так делаю, но теперь у меня выбивает ошибку

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

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND ORDER BY `id` DESC' at line 1
The SQL being executed was: SELECT `categories`.* FROM `categories` LEFT JOIN `products` ON `categories`.`id_prod` = `products`.`id` LEFT JOIN `gallery_image` ON `products`.`id` = `gallery_image`.`ownerId` WHERE AND ORDER BY `id` DESC
omhed
Сообщения: 4
Зарегистрирован: 2017.03.23, 17:45

Re: запрос к БД

Сообщение omhed »

что это может быть?
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: запрос к БД

Сообщение caHek2x »

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

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

->where(['AND', [$field => $id], ['>', "products.price", 50], ['<', "products.price", 300]])
omhed
Сообщения: 4
Зарегистрирован: 2017.03.23, 17:45

Re: запрос к БД

Сообщение omhed »

Все работает, тема закрыта. Спасибо огромное саНеk2x за помощь!
вот мой рабочий код

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

$result = Category::find()->joinWith('category.products')->where(['categories'.'.'.$field => $id])
			->andWhere(['>', "products.price", $min])->andWhere(['<', "products.price", $max])->orderBy(['products.id'=>SORT_DESC])->all();
Ответить