where(function ($query) use ($today) { // 方式1: start_date 已填写且 <= 今天 $query->where(function ($q) use ($today) { $q->whereNotNull('start_date') ->where('start_date', '<=', $today); }) // 方式2: 或者课程状态为进行中(即使 start_date 未及时填写) ->orWhere('course_status', 10) // 方式3: 或者课程已结束 ->orWhere('course_status', 40); }) ->get(); $totalUpdated = 0; foreach ($courses as $course) { // 获取报名通过的学员 $courseSigns = CourseSign::where('course_id', $course->id)->where('status', 1)->get(); if ($courseSigns->isEmpty()) { continue; } // 只更新还不是校友的学员,避免重复处理 $updated = User::whereIn('id', $courseSigns->pluck('user_id')) // ->where('is_schoolmate', '!=', 1) //->where('is_black',0) ->update(['is_schoolmate' => 1]); $totalUpdated += $updated; } return $this->info("更新完成,共处理 {$totalUpdated} 位学员"); } }