需要帮助以使用activedataprovider建立查询

时间:2018-11-29 08:03:53

标签: mysql yii2 yii2-advanced-app

我想在yii2 ActiveDataProvider中执行以下WHERE条件

预期条件:

$query="WHERE VoterName Like '%s%' AND (contactno != '' OR whatsapp_no!= '')";

我当前所在的条件:

$query->andFilterWhere(['like', 'VoterName', $this->VoterName]);
$query->orWhere(['<>', 'contactno', ''])->orWhere(['<>', 'whatsapp_no', '']);

我只想获取具有contactno或whatsapp_no的记录。

2 个答案:

答案 0 :(得分:1)

当您需要设置多个条件时,必须使用andWhere,例如对于您的问题:

$query->andFilterWhere(['like', 'VoterName', $this->VoterName]);
$query->andWhere(['OR',['<>', 'contactno', ''],['<>', 'whatsapp_no', '']]);

答案 1 :(得分:0)

参考:\yii\db\QueryInterface::where()

以下查询可以满足您的需求吗?

$query->andWhere(['like', 'VoterName', $this->VoterName])
      ->andWhere(['or',
                 ['!=', 'contactno', ''],
                 ['!=', 'whatsapp_no', '']
        ]);