假装是大佬

假装是大佬

不会前端的后端不是好运维

  • 财富值1975
  • 威望值70
  • 总积分3025

个人信息

  • 2017-11-01 已签到
    连续签到1天,获得了5个金钱
  • 2017-10-30 已签到
    连续签到1天,获得了5个金钱
  • 2017-10-27 已签到
    连续签到4天,获得了20个金钱
  • 2017-10-26 已签到
    连续签到3天,获得了15个金钱
  • 2017-10-25 已签到
    连续签到2天,获得了10个金钱
  • 2017-10-24 已签到
    连续签到1天,获得了5个金钱
  • 2017-10-19 已签到
    连续签到4天,获得了20个金钱
  • 2017-10-18 已签到
    连续签到3天,获得了15个金钱
  • 赞了回答

    不太清楚你的使用场景,建议多结合自己项目的业务场景+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查询条件的默认优先级,其实这个并没有所谓的默认优先级。查询条件的组合,取决于你的使用顺序。

总监 等级规则
3025/5000
资料完整度
100/100
用户活跃度
0/100

Ta的关注

2

Ta的粉丝

3

Ta的访客

14