Yii2如何执行AND或OR条件分组?

Vik*_*ary 36 php mysql activerecord yii yii2

我是Yii-2框架的新手.如何使用activeQuery和模型在Yii-2框架中实现以下查询.

SELECT * FROM users AS u WHERE u.user_id IN(1,5,8) AND (u.status = 1 OR u.verified = 1) OR (u.social_account = 1 AND u.enable_social = 1)
Run Code Online (Sandbox Code Playgroud)

谢谢

小智 66

你可以试试这个:

//SELECT * FROM users AS u WHERE u.user_id IN(1,5,8) AND (u.status = 1 OR u.verified = 1) OR (u.social_account = 1 AND u.enable_social = 1)
$model = arname()->find()
       ->andWhere(['user_id'=>[1,5,8]])
       ->andWhere(['or',
           ['status'=>1],
           ['verified'=>1]
       ])
       ->orWhere(['and',
           ['social_account'=>1],
           ['enable_social'=>1]
       ])
       ->all();
Run Code Online (Sandbox Code Playgroud)


moh*_*hit 31

试试这个 -

$query = (new \yii\db\Query())
            ->select('*')
            ->from('users u')
            ->where(['and',['u.user_id'=>[1,5,8]],['or','u.status=1','u.verified=1']])
            ->orWhere(['u.social_account'=>1,'u.enable_social'=>1]);
    $command = $query->createCommand();
    print_r ($command->sql);die;
Run Code Online (Sandbox Code Playgroud)

更多信息