->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?感觉以前版本不是这样的,我应该怎么写才对?
最佳答案