all(); // ソート可能なカラム $allowedSortColumns = ['psection_id', 'psection_subject']; // ソート情報の取得 $sortColumn = $inputs['sort'] ?? 'psection_id'; $sortType = strtolower($inputs['sort_type'] ?? 'asc'); $query = \App\Models\Psection::query(); if (in_array($sortColumn, $allowedSortColumns, true)) { if (!in_array($sortType, ['asc', 'desc'], true)) { $sortType = 'asc'; } $query->orderBy($sortColumn, $sortType); } // ページネーション(20件) $list = $query->paginate(20); return view('admin.psection.list', [ 'list' => $list, 'sort' => $sortColumn, 'sort_type' => $sortType, ]); } // 新規追加 public function add(Request $request) { if ($request->isMethod('post')) { $validated = $request->validate([ // 'psection_id' は自動採番なので不要 'psection_subject' => 'required|string|max:255', ]); Psection::create($validated); return redirect()->route('psections')->with('success', '車室区分を追加しました'); } // GET の場合は空のモデルを渡してフォームを表示 return view('admin.psection.add', ['psection' => new Psection()]); } // 編集 public function edit(Request $request, $id) { // 主キーで検索(見つからない場合は 404) $psection = Psection::findOrFail($id); if ($request->isMethod('post')) { // バリデーション $validated = $request->validate([ 'psection_subject' => 'required|string|max:255', ]); // データ更新 $psection->update($validated); // 成功メッセージ & リダイレクト return redirect()->route('psections')->with('success', '車種区分を更新しました'); } // 編集画面を表示 return view('admin.psection.edit', compact('psection')); } // 詳細(info) public function info(Request $request, $id) { $psection = Psection::findOrFail($id); return view('admin.psection.info', compact('psection')); } // 削除 public function delete(Request $request) { $arr_pk = $request->get('pk'); if (!is_array($arr_pk)) { $arr_pk = [$arr_pk]; } if ($arr_pk && count($arr_pk) > 0) { if (Psection::whereIn('psection_id', $arr_pk)->delete()) { return redirect()->route('psections')->with('success', __("削除が完了しました。")); } else { return redirect()->route('psections')->with('error', __('削除に失敗しました。')); } } return redirect()->route('psections')->with('error', __('削除するデータを選択してください。')); } }