Запросы с полями NULL

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Запросы с полями NULL

Сообщение Chelobaka »

Здравствуйте,

Есть запрос.

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

$statuses_ids = [1,2,3];
$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->all();
Проблема в том, что по умолчанию значение статуса NULL. И данный запрос не находит эти записи хотя в statuses_ids его нет.
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

Re: Запросы с полями NULL

Сообщение Usick »

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['IS', 'status', null])->all();
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Запросы с полями NULL

Сообщение yiiliveext »

Usick писал(а): 2019.10.15, 17:08

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['IS', 'status', null])->all();
Так не будет работать, а так будет

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['IS', 'status', new \yii\db\Expression('NULL')])->all();
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

Re: Запросы с полями NULL

Сообщение Usick »

Возможно, но у меня работает. Наверное зависит от версии php, базы данных. Также обратите внимание на то, что null указан не как строка.
Аватара пользователя
Chelobaka
Сообщения: 214
Зарегистрирован: 2018.06.01, 09:54

Re: Запросы с полями NULL

Сообщение Chelobaka »

yiiliveext писал(а): 2019.10.15, 17:13
Usick писал(а): 2019.10.15, 17:08

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['IS', 'status', null])->all();
Так не будет работать, а так будет

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['IS', 'status', new \yii\db\Expression('NULL')])->all();
Работает без проблем.
Usick
Сообщения: 42
Зарегистрирован: 2017.04.11, 12:07

Re: Запросы с полями NULL

Сообщение Usick »

Chelobaka писал(а): 2019.10.15, 17:19 Работает без проблем.
Оба варианта?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Запросы с полями NULL

Сообщение yiiliveext »

Usick писал(а): 2019.10.15, 17:18 Возможно, но у меня работает. Наверное зависит от версии php, базы данных. Также обратите внимание на то, что null указан не как строка.
Значит исправили в последних версиях, раньше не работало.
P.S. Сейчас даже так можно записать

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

$box = Box::find()->where(['NOT IN', 'status', $statuses_ids])->orWhere(['status' => null])->all();
Ответить