Проблема с relation

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Проблема с relation

Сообщение S c »

Есть relation

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

public function getOfferToUser() {
       return $this->hasOne(OfferToUser::className(), [
                'offer_id' => 'offer_id',
                'user_id' => 'user_id',
                'country_id' => 'country_id',
                'city_id' => 'city_id', // city_id может быть null
        ]);
} 
Когда к нему обращаюсь:

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

$this->offerToUser
Получается следующий SQL:

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

SELECT * FROM offer_to_user 
WHERE (offer_id,user_id,country_id,city_id) IN (('4','18','1',NULL))
Суть в том, что city_id может быть null (остальные поля обязательны). SQL этот не работает, если WHERE часть переписать как:

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

WHERE offer_id=4 AND user_id=18 AND country_id=1 AND city_id IS NULL
тогда все нормально работает.

В общем что я тут могу сделать? как правильно написать relation, когда одно из полей может быть null? И вообще почему haOne() не генерирует "limit 1"?
Последний раз редактировалось S c 2016.08.23, 23:16, всего редактировалось 1 раз.
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Проблема с relation

Сообщение S c »

В общем в mysql "IN (null)" не работает. А yii генерирует именно такой запрос. Баг?
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Проблема с relation

Сообщение S c »

Перенесите тему в yii2 Раздел :)
Ответить