我正在尝试在foreach循环中的WHERE中添加第二个条件。
$customers = Customers::find()->where(['status' => 1])->orderBy('vip DESC, id ASC')->all();
目前,我已经过滤了status = 1,但我还需要添加'rank'不等于文本“Can”。
我需要StackOverflow的原因是我试图在网上找到答案,但我有一个文本比较和一个我以前没用过的新查询方法,所以我不能很好地研究。
如何在WHERE子句中添加附加条件“AND'rank'!='Can'?
如果我不得不猜测它,我会这样写(可能是错的)
$customers = Customers::find()->where(['status' => 1])
->andwhere (['rank' !=> 'Can'])
->orderBy('vip DESC, id ASC')->all();
答案 0 :(得分:1)
根据惊人的ActiveQuery documentation,您必须使用andWhere()
方法:
$customers = Customers::find()->where(['status' => 1])
->andwhere (['not', ['rank' => 'Can']])
->orderBy('vip DESC, id ASC')->all();
OR:
->andwhere (['<>', 'rank', 'Can'])
请记住,PHP
没有 !=>
比较运营商!
答案 1 :(得分:0)
在Yii中,我认为你需要改变,并且在哪里和哪里。 或试试这个
$customers = Customers::find()->where("status = 1 and rank!='Can'"])->orderBy('vip DESC, id ASC')->all();