我是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)
谢谢
发布于 2017-06-17 10:01:28
您可以尝试这样做:
//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();
发布于 2015-07-22 16:37:32
试试这个-
$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;
发布于 2015-07-22 16:26:10
我假设您已经了解了Yii 2.0中的数据库配置,它与Yii 1.0版本中的基本相同。
如果你想使用activeQuery,你需要先定义一个‘USERS’类:
<?php
namespace app\models;
use yii\db\ActiveRecord;
class USERS extends ActiveRecord {
public static function tableName()
{
return 'users';
}
}
?>
然后,当你使用它时,你可以这样写它:
<?
$usr_data = USERS::find()->
->where("user_id IN(1,5,8) AND (status = 1 OR verified = 1) OR (social_account = 1 AND enable_social = 1)")
->all();
?>
在我看来,active query提供了一种按子块分隔sql的方法。但是,当您有如此复杂的“AND OR”WHERE条件时,应用它没有任何意义。
https://stackoverflow.com/questions/31557302
复制相似问题