如何在 YII2 中使用非空条件

2022-08-30 11:17:35

嗨,我想在我的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

可以将运算符与不应为 null 的字段结合使用来生成 SQL 语句。喜欢这个:notIS NOT NULL

$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
->where(['IS NOT', 'column', null]);

获取

WHERE column IS NOT NULL

您也可以使用,打字更快

->where('column IS NOT NULL')

在复杂查询中

->where(['AND',
  'column1 IS NOT NULL', // works
  ['IS NOT', 'column2', null], // works
  ['column3' => $value],
)

推荐