用ar查询可以指定优先级吗 [ 2.0 版本 ]
默认是and优先级高于or,但我想把or放到跟in同一级,and在下一级,要如何写
最佳答案
-
不太清楚你的使用场景,建议多结合自己项目的业务场景+yii2debug插件 或者 自行使用
getRawSql
方法进行调试这边提供一小段测试代码(其中的表名及字段名均无实际意义)
$query = new \yii\db\Query(); $sql1 = $query->from('test_table')->where([ 'OR', ['col1' => [1,2,3]], [ 'AND', ['col2' => 3], ['like', 'col3', 'defg'], ] ])->createCommand()->getRawSql(); var_dump($sql1); $sql2 = $query->from('test_table')->where([ 'in', 'col1', [1,2,3] ])->orWhere([ 'AND', ['col2' => 3], ['like', 'col3', 'defg'], ])->createCommand()->getRawSql(); var_dump($sql2);
执行结果
#sql1 SELECT * FROM `test_table` WHERE (`col1` IN (1, 2, 3)) OR ((`col2`=3) AND (`col3` LIKE '%defg%')) #sql2 SELECT * FROM `test_table` WHERE (`col1` IN (1, 2, 3)) OR ((`col2`=3) AND (`col3` LIKE '%defg%'))
顺便提下就是 AR查询条件的默认优先级,其实这个并没有所谓的默认优先级。查询条件的组合,取决于你的使用顺序。
假装是大佬 觉得很赞
其他 0 个回答
没有找到数据。
颜色
注册时间:2017-04-27
最后登录:2017-12-23
在线时长:8小时12分
最后登录:2017-12-23
在线时长:8小时12分
- 粉丝1
- 金钱530
- 威望0
- 积分610