get(); $parkId = $request->input('park_id', ''); $masterList = [ [ 'name' => 'マスターA', 'status' => '利用中', 'groups' => [], ], [ 'name' => 'マスターB', 'status' => '待作中', 'groups' => [], ], ]; if ($parkId) { // parkとprice_aをJOIN $aRows = \DB::table('price_a') ->join('park', 'park.park_id', '=', 'price_a.park_id') ->where('price_a.park_id', $parkId) ->select('price_a.*') // 必要ならpark.*も ->get(); $aGrouped = $this->groupPriceRows($aRows); $masterList[0]['groups'] = $aGrouped; // マスターBも同様に取得・整形する場合はここに追加 } return view('admin.PriceList.list', [ 'parkList' => $parkList, 'parkId' => $parkId, 'masterList' => $masterList, ]); } /** * 料金データを「駐輪分類ID-ユーザ分類ID-駐輪場ID」でグループ化 */ private function groupPriceRows($rows) { $result = []; foreach ($rows as $row) { // グループキーは分類ID+ユーザ分類ID+駐輪場ID $key = $row->price_ptypeid . '-' . $row->user_categoryid . '-' . $row->park_id; if (!isset($result[$key])) { $result[$key] = [ 'id' => $row->price_parkplaceid, 'classification' => $row->price_ptypeid, 'room_number' => '', // 必要ならpplace_id等をセット 'category1' => $row->prine_name ?? '', 'category2' => '', 'category3' => '', 'bike_1m' => '', 'bike_2m' => '', 'bike_3m' => '', 'bike_6m' => '', 'bike_12m' => '', // 必要なら原付・自動二輪も同様に追加 ]; } // 月数ごとに金額をセット if ($row->price_month == 1) { $result[$key]['bike_1m'] = $row->price; } elseif ($row->price_month == 2) { $result[$key]['bike_2m'] = $row->price; } elseif ($row->price_month == 3) { $result[$key]['bike_3m'] = $row->price; } elseif ($row->price_month == 6) { $result[$key]['bike_6m'] = $row->price; } elseif ($row->price_month == 12) { $result[$key]['bike_12m'] = $row->price; } } return array_values($result); } public function update(Request $request) { foreach ($request->input('rows', []) as $row) { $id = $row['id'] ?? null; if (!$id) continue; // 更新対象の月リスト $months = [ 'bike_1m' => 1, 'bike_2m' => 2, 'bike_3m' => 3, 'bike_6m' => 6, 'bike_12m' => 12, ]; foreach ($months as $field => $month) { if (isset($row[$field])) { // price_aから該当レコードを取得 $item = \App\Models\PriceA::where('price_parkplaceid', $id) ->where('price_month', $month) ->first(); if ($item) { $item->price = $row[$field]; $item->save(); } } } // 原付・自動二輪も同様に必要なら追加 } return back()->with('success', '金額を更新しました'); } public function insert(Request $request) { // 例:bike_2m(2ヶ月)だけ新規追加する場合 if ($request->filled('bike_2m')) { $row = new \App\Models\PriceA(); $row->park_id = $request->input('park_id'); // 必要に応じて $row->price = $request->input('bike_2m'); $row->price_month = 2; // 他の必要なカラムもセット $row->save(); } // 他の月も同様に必要なら追加 return back()->with('success', '金額を追加しました'); } }