关于TP6.0.4中的when的复杂查询

浏览:2078 发布日期:2020/10/22 分类:ThinkPHP6专区
->where(function ($query) use($src) {
                    $query
                        ->whereOr('teacher_id', $src['teacher_id'])
                        ->whereOr('banji_id', 'in', $src['bjIds']);
                })
打印后是代码是这样的"SELECT * FROM `cj_tongji_bj` WHERE (  (  `teacher_id` = 337  OR `banji_id` IN (17,74,58) ) ) AND `cj_tongji_bj`.`delete_time` IS NULL"上面是我想要的效果,在上面效果的基础上我想加一个条件判断->where(function ($query) use($src) {
                    $query
                        ->whereOr('teacher_id', $src['teacher_id'])
                        ->when(count($src['bjIds']) > 0, function ($q) use($src) {
                            $q->whereOr('banji_id', 'in', $src['bjIds']);
                        });
                })
打印后代码是这样的"SELECT * FROM `cj_tongji_bj` WHERE (  (  `teacher_id` = 337 AND (  `banji_id` IN (17,74,58) ) ) ) AND `cj_tongji_bj`.`delete_time` IS NULL"这不是我想要的效果。

想请教各位大神的是,为什么加上when后,在使用了whereOr,生成的也是and?感觉以前版本不是这样的,我应该怎么写才对?
最佳答案
评论( 相关
后面还有条评论,点击查看>>