Compare commits

...

2 Commits

Author SHA1 Message Date
e13302475e Merge pull request '駐輪場検索 並び替え修正' (#44) from main_higashide into main
All checks were successful
Deploy so-manager (auto) / deploy (push) Successful in 24s
Reviewed-on: #44
2025-10-07 17:32:06 +09:00
8a9bd9d569 駐輪場検索 並び替え修正 2025-10-07 17:31:46 +09:00

View File

@ -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');
}
$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,