when($request->query('keywords'), function (Builder $builder, $keywords) { $builder->whereRaw("concat(ifnull(name,''),ifnull(intro,'')) like ?",["%{$keywords}%"]); })->withCount('images')->withSum('images', 'size')->latest()->paginate(); return view('admin.strategy.index', compact('strategies')); } public function add(): View { return view('admin.strategy.add'); } public function edit(Request $request): View { /** @var Strategy $strategy */ $strategy = Strategy::query()->findOrFail($request->route('id')); return view('admin.strategy.edit', compact('strategy')); } public function create(StrategyRequest $request): Response { $validated = $request->validated(); $strategy = new Strategy($validated); DB::transaction(function () use ($strategy, $validated) { $strategy->save(); $strategy->groups()->attach($validated['groups']); }); return $this->success('创建成功'); } public function update(StrategyRequest $request): Response { $validated = $request->validated(); /** @var Strategy $strategy */ $strategy = Strategy::query()->findOrFail($request->route('id')); $strategy->fill($request->validated()); DB::transaction(function () use ($strategy, $validated) { $strategy->save(); $strategy->groups()->sync($validated['groups']); }); return $this->success('保存成功'); } public function delete(Request $request): Response { if ($group = Strategy::query()->find($request->route('id'))) { $group->delete(); } return $this->success('删除成功'); } }