dprfe04886 2015-07-30 11:58
浏览 113
已采纳

如何在Yii ActiveRecord中编写OR表达式?

I tried the following, but it didn't work.

$kw = \app\models\Keyword::find()->where(['keyword'=>$word, ['or', ['country' => $country], ['country' => null]], ['or', ['language' => $language], ['language' => null]]]);

I also tried

$kw = \app\models\Keyword::find()->where(['keyword'=>$word, ['or', 'country' => $country, 'country' => null], ['or', 'language' => $language, 'language' => null]]);

Worthless error:

PHP Warning 'yii\base\ErrorException' with message 'strtoupper() expects parameter 1 to be string, array given'

Docs: http://www.yiiframework.com/doc-2.0/yii-db-queryinterface.html#where()-detail

  • 写回答

3条回答 默认 最新

  • dqcuq4138 2015-07-30 12:19
    关注

    I solved it with andWhere()

    $kw = \app\models\Keyword::find()->where(['keyword'=>$word])->andWhere(['or', ['country' => $country], ['country' => null]])->andWhere(['or', ['language' => $language], ['language' => null]]);

    which yields

    SELECT * FROM `keyword` WHERE ((`keyword`='women\'s running shoes') AND ((`country`='US') OR (`country` IS NULL))) AND ((`language`='en') OR (`language` IS NULL)) ORDER BY `country`, `language`

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部