//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();
8条答案
按热度按时间flvlnr441#
您可以尝试以下操作:
x759pob22#
试试这个-
more info
68bkxrlz3#
我假设你已经了解了Yii 2.0中的数据库配置,它和Yii 1.0版本中的基本相同。
如果要使用activeQuery,则需要首先定义一个'USERS'类:
然后,当您使用它时,可以将其编写为:
在我看来,主动查询提供了一种通过子块分离sql的方法。但是当你有这样一个复杂的“AND OR”WHERE条件时,应用它没有任何意义。
kninwzqo4#
★也可以这样做:
7d7tgy0s5#
egmofgnx6#
使用
MongoDB
:已测试。与DBMS类似。
w51jfk4q7#
首先使用OR条件。例如:
就像“和...(..或...)”
2skhul338#
ActiveQuery
的where()
函数也接受字符串作为它的第一个参数,该参数将在WHERE
查询条件中使用。因此,最简单的方法是将这些条件放在where()
函数中。假设您使用的是
ActiveRecord
模型,您可以在模型中执行类似以下的操作。当然,您应该使用预准备语句,而不是在查询中硬编码值,但上面的代码只是给予您一个想法。
您可以在文档Here和Here中找到更多详细信息