我想在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的记录。
答案 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', '']
]);