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('get')) { // GET:新規画面を表示 return view('admin.psection.add', [ 'isEdit' => false, // フォーム判定用 'record' => new Psection(), // ← ★★ これを渡すことで $record が使える ]); } // POST:バリデーション $validated = $request->validate([ // 'psection_id' は自動採番 'psection_subject' => 'required|string|max:255', ]); // 登録処理 Psection::create($validated); // 完了メッセージ+一覧へ戻る return redirect()->route('psections')->with('success', '登録しました。'); } /** * 車種区分マスタ:編集(画面/処理) */ public function edit(Request $request, $id) { // 主キーで検索(見つからない場合は404) $record = Psection::findOrFail($id); if ($request->isMethod('get')) { // 編集画面表示 return view('admin.psection.edit', [ 'isEdit' => true, // ← ★ Blade 側のフォームで新規/編集を判定するため 'record' => $record, // ← ★ _form.blade.php で使用する ]); } // POST時:バリデーション $validated = $request->validate([ 'psection_subject' => 'required|string|max:255', ]); // データ更新 $record->update($validated); // 成功メッセージ & リダイレクト return redirect()->route('psections')->with('success', '更新しました。'); } /** * 削除(単一/複数対応) */ public function delete(Request $request) { $ids = []; // 単一削除(編集画面などからの削除ボタン) if ($request->filled('id')) { $ids[] = (int) $request->input('id'); } // 一覧画面からの複数削除チェックボックス対応 if (is_array($request->input('pk'))) { $ids = array_merge($ids, $request->input('pk')); } // 重複削除・無効値除去 $ids = array_values(array_unique(array_map('intval', $ids))); // 削除対象がない場合 if (empty($ids)) { return back()->with('error', '削除対象が選択されていません。'); } // 削除実行 Psection::whereIn('psection_id', $ids)->delete(); // 完了メッセージ+リダイレクト return redirect()->route('psections')->with('success', '削除しました。'); } }