0) $users = User::whereNotNull('company_name') ->where('company_name', '!=', '') ->where(function ($query) { $query->whereNull('company_id') ->orWhere('company_id', '<=', 0); }) ->whereHas('courseSigns', function ($query) { $query->where('status', 1); // 审核通过 }) ->select('id', 'username', 'company_name', 'company_id') ->orderBy('id', 'desc') ->get(); $totalCount = $users->count(); return view('company_search', compact('users', 'totalCount')); } /** * 更新用户公司信息 */ public function updateUserCompany(Request $request) { $validator = Validator::make($request->all(), [ 'user_id' => 'required|integer|exists:users,id', 'company_name' => 'required|string', ]); if ($validator->fails()) { return response()->json([ 'code' => 400, 'msg' => $validator->errors()->first() ], 400); } try { $user = User::find($request->user_id); if (!$user) { return response()->json([ 'code' => 404, 'msg' => '用户不存在' ], 404); } // 获取当前用户的公司名称(更新前的) $oldCompanyName = $user->company_name; // 更新当前用户 $user->company_name = $request->company_name; $user->company_id = null; // 设置 company_id 为 null $user->save(); // 查找所有具有相同公司名称的用户(排除已匹配到公司的,即 company_id > 0) $sameCompanyUsers = User::where('company_name', $oldCompanyName) ->where(function ($query) { $query->whereNull('company_id') ->orWhere('company_id', '<=', 0); }) ->whereHas('courseSigns', function ($query) { $query->where('status', 1); // 审核通过 }) ->get(); // 批量更新所有相同公司名称的用户 $updateCount = 0; foreach ($sameCompanyUsers as $sameUser) { $sameUser->company_name = $request->company_name; $sameUser->company_id = null; $sameUser->save(); $updateCount++; } return response()->json([ 'code' => 200, 'msg' => '更新成功,共更新 ' . $updateCount . ' 条记录', 'data' => [ 'user' => $user, 'updated_count' => $updateCount ] ]); } catch (\Exception $e) { return response()->json([ 'code' => 500, 'msg' => '更新失败: ' . $e->getMessage() ], 500); } } }