需要帮助使用 activedataprovider 构建查询

Need Help for build query with activedataprovider

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

预期条件:

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

我当前where条件:

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

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

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

下面的查询能满足您的需求吗?

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

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

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