query('status'); $users = User::query()->when($status > -1, function (Builder $builder) use ($status) { $builder->where('status', $status); })->when($request->query('keywords'), function (Builder $builder, $keywords) { $builder->where('name', 'like', "%{$keywords}%")->orWhere('email', 'like', "%{$keywords}%"); })->with('group')->withSum('images', 'size')->latest()->paginate(); $users->getCollection()->each(function (User $user) { $user->group->setVisible(['name']); }); $statuses = [-1 => '全部', 1 => '正常', 0 => '冻结']; return view('admin.user.index', compact('users', 'statuses')); } public function edit(Request $request): View { $user = User::query()->findOrFail($request->route('id')); return view('admin.user.edit', compact('user')); } public function update(UserRequest $request): Response { /** @var User $user */ $user = User::query()->findOrFail($request->route('id')); $validated = $request->validated(); if (empty($validated['password'])) { unset($validated['password']); } else { $user->forceFill([ 'password' => Hash::make($validated['password']), 'remember_token' => Str::random(60), ]); event(new PasswordReset($user)); } $user->fill($validated); $user->group_id = $validated['group_id']; if (!$user->save()) { return $this->fail('保存失败'); } return $this->success('保存成功'); } public function delete(Request $request): Response { /** @var User $user */ if ($user = User::query()->find($request->route('id'))) { DB::transaction(function () use ($user) { $user->images()->update(['user_id' => null]); $user->albums()->delete(); $user->delete(); }); } return $this->success('删除成功'); } }