diff --git a/app/Http/Controllers/Admin/OtherController.php b/app/Http/Controllers/Admin/OtherController.php index e1ae461..6404023 100755 --- a/app/Http/Controllers/Admin/OtherController.php +++ b/app/Http/Controllers/Admin/OtherController.php @@ -230,20 +230,30 @@ class OtherController extends CommonController // 审核通过人数去重 $list['course_signs_pass_unique'] = CourseSign::courseSignsTotalByUnique($start_date, $end_date, 1, $courses->pluck('id'), null); // 开课场次 + // 开课场次 $calendar = Calendar::where(function ($query) use ($start_date, $end_date) { - $query->whereBetween('start_time', [$start_date, $end_date]) + $query->whereBetween('start_time1', [$start_date, $end_date]) ->orWhereBetween('end_time', [$start_date, $end_date]); - })->where(function ($query) use ($course_type_id, $courses) { + })->where(function ($query) use ($course_type_id) { // 条件1:有 course_id 的数据,通过 course.type 匹配课程体系 // 条件2:没有 course_id 的数据,直接用 course_type_id 字段匹配 // 两个条件是或关系 - if ($courses->count()) { - $query->whereIn('course_id', $courses->pluck('id')); - } + if ($course_type_id) { - $query->orWhere('course_type_id', $course_type_id); + $course_type_id_array = is_array($course_type_id) ? $course_type_id : explode(',', $course_type_id); + + // 条件1:有 course_id 时,通过关联的 course.type 匹配 + $query->where(function ($q) use ($course_type_id_array) { + $q->whereHas('course', function ($subQ) use ($course_type_id_array) { + $subQ->whereIn('type', $course_type_id_array); + }); + }); + + // 条件2:没有 course_id 时,直接用 course_type_id 字段匹配(或关系) + $query->orWhere(function ($q) use ($course_type_id_array) { + $q->whereIn('course_type_id', $course_type_id_array); + }); } - })->get(); $list['course_total'] = (clone $calendar)->count();