Как использовать не нулевое условие в YII2
Привет, я хочу использовать в моем запросе yii2 не пустое значение, как я должен его использовать.
Я не хочу, чтобы город и государство были нулевыми.
Мой запрос
$query = new Query;
$query->select('ID, City,State,StudentName')
->from('student')
->where(['IsActive' => 1])
->orderBy(['rand()' => SORT_DESC])
->limit(10);
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => false,
]);
Ответы
Ответ 1
Вы можете использовать оператор not
в сочетании с полями, которые не должны иметь значение null, чтобы сгенерировать оператор IS NOT NULL
SQL. Вот так:
$query = new Query;
$query->select('ID, City,State,StudentName')
->from('student')
->where(['IsActive' => 1])
->andWhere(['not', ['City' => null]])
->andWhere(['not', ['State' => null]])
->orderBy(['rand()' => SORT_DESC])
->limit(10);
Также проверьте примеры в документации.
Ответ 2
Один из вариантов:
$query = new Query;
$query->select('ID, City,State,StudentName')
->from('student')
->where(['IsActive' => 1])
->andWhere(['<>', 'City', null])
->andWhere(['<>', 'State', null])
->orderBy(['rand()' => SORT_DESC])
->limit(10);
Проверьте официальные документы для where.
Ответ 3
$items = BadOffer::find()->where(['OR',
['IS', 'moderator_id', (new Expression('Null'))],
['moderator_id' => $user->id],
]);
Ответ 4
->where(['IS NOT', 'column', null]);
получить
WHERE column IS NOT NULL
Ответ 5
используйте ->andWhere(['not', ['State' => null]])
или ->andWhere(['is not', 'State', null]);
Не использовать:
-
andFilterWhere
, так как null
будет игнорировать этот фильтр
-
->andWhere(['<>', 'State', null])
, поскольку он формирует запрос AND State <> null
Ответ 6
В Yii2 вы можете использовать, как показано ниже
1) ->andWhere(['NOT', ['city' => null]])
2) ->andWhere(['<>', ['city' => null]])
3) ->andWhere('city IS NOT NULL')