input('period', 'month'); // month | all $type = $request->input('type', 'all'); // task(<99) | hard(>99) | all $status = $request->input('status', 'untreated'); // untreated(=1) | inprogress(=2) | done(=3) | all $q = DB::table('operator_que as oq') ->leftJoin('user as u', 'oq.user_id', '=', 'u.user_id') ->leftJoin('park as p', 'oq.park_id', '=', 'p.park_id') // オペレータマスタ(テーブル・カラム名は環境に合わせて調整) ->leftJoin('ope as o', 'oq.operator_id', '=', 'o.ope_id') ->select( 'oq.que_id','oq.que_class','oq.user_id', DB::raw('u.user_name as user_name'), 'oq.contract_id','oq.park_id', DB::raw('p.park_name as park_name'), 'oq.que_comment','oq.que_status','oq.que_status_comment', 'oq.work_instructions','oq.created_at','oq.updated_at','oq.operator_id', DB::raw('o.ope_name as operator_name') ); // 期間: 登録日ベース(最新1ヵ月 or 全期間) if ($period === 'month') { $q->where('oq.created_at', '>=', now()->subMonth()); } // 種別: que_class if ($type === 'task') { $q->where('oq.que_class', '<', 99); } elseif ($type === 'hard') { $q->where('oq.que_class', '>', 99); } // all は絞り込みなし // ステータス: que_status if ($status === 'untreated') { $q->where('oq.que_status', 1); } elseif ($status === 'inprogress') { $q->where('oq.que_status', 2); } elseif ($status === 'done') { $q->where('oq.que_status', 3); } // all は絞り込みなし $jobs = $q->orderByDesc('oq.que_id')->paginate(50)->appends($request->query()); return view('admin.information.list', compact('jobs','period','type','status')); } // ステータス一括更新(着手=2 / 対応完了=3) public function updateStatus(Request $request) { $request->validate([ 'ids' => 'required|array', 'action' => 'required|in:inprogress,done', ]); $new = $request->action === 'inprogress' ? 2 : 3; DB::table('operator_que') ->whereIn('que_id', $request->ids) ->update([ 'que_status' => $new, 'updated_at' => now(), ]); return back()->with('success', '選択したキューのステータスを更新しました。'); } }