diff --git a/app/Http/Controllers/RegularContractCreateController.php b/app/Http/Controllers/RegularContractCreateController.php index 64edca5..c269d6a 100644 --- a/app/Http/Controllers/RegularContractCreateController.php +++ b/app/Http/Controllers/RegularContractCreateController.php @@ -82,21 +82,16 @@ class RegularContractCreateController extends Controller // 並び替えパラメータ取得 $sort = request()->input('sort', 'park_id'); $order = request()->input('order', 'asc'); - \Log::info('sort param: ' . $sort); $sortable = [ 'park_ruby' => 'park.park_ruby', 'city_id' => 'city.city_id', 'station_name_ruby' => 'station.station_name_ruby', 'park_id' => 'park.park_id', ]; - if (isset($sortable[$sort])) { - $query->orderBy($sortable[$sort], $order); - } else { - $query->orderBy('park.park_id', 'asc'); - } + $query->orderBy('park.park_id', 'asc'); $total = $query->count(); - $parks_table = $query->skip(($page - 1) * $perPage)->take($perPage)->get(); + $parks_table = $query->get(); if ($sort === 'park_ruby' || $sort === 'station_name_ruby') { $collator = new \Collator('ja_JP'); @@ -107,7 +102,15 @@ class RegularContractCreateController extends Controller ? $collator->compare($a_val, $b_val) : $collator->compare($b_val, $a_val); })->values(); + } else { + // park_id, city_idなどはSQLのorderByで十分なので、ここでPHPソートは不要 + if (isset($sortable[$sort])) { + $parks_table = $parks_table->sortBy($sort, SORT_REGULAR, $order === 'desc')->values(); + } } + $page = request()->input('page', 1); + $perPage = 10; + $parks_table = $parks_table->slice(($page - 1) * $perPage, $perPage)->values(); // zoneテーブルデータを取得(psectionテーブルとJOINしてpsection_subjectも取得) $zones = DB::table('zone') @@ -140,7 +143,7 @@ class RegularContractCreateController extends Controller } return view('regular_contract.create', [ - 'active_menu' => $active_menu, // 画面ID + 'active_menu' => $active_menu, // この画面のID 'user_name' => $user ? $user->user_name : '', // ユーザー名(ヘッダー用) 'cities' => $cities, 'stations' => $stations,