select([ 'rc.contract_id', 'rc.contract_qr_id', 'rc.user_id', 'rc.user_categoryid', 'rc.park_id', 'rc.contract_created_at', 'rc.contract_periods', 'rc.contract_periode', 'rc.tag_qr_flag', 'rc.contract_flag', 'rc.contract_cancel_flag', 'rc.contract_payment_day', 'rc.contract_money', 'rc.billing_amount', 'rc.contract_permission', 'rc.contract_manual', 'rc.contract_notice', 'p.park_name', 'u.user_name', 'u.user_phonetic', 'u.user_mobile', 'u.user_homephone', 'u.user_primemail', 'u.user_gender', 'u.user_birthdate', 'u.user_regident_zip', 'u.user_regident_pre', 'u.user_regident_city', 'u.user_regident_add', 'u.user_relate_zip', 'u.user_relate_pre', 'u.user_relate_city', 'u.user_relate_add', 'u.user_graduate', 'u.user_workplace', 'u.user_school', 'u.user_remarks', // 他に必要なカラムもここに追加 ]) ->leftJoin('park as p', 'rc.park_id', '=', 'p.park_id') ->leftJoin('user as u', 'rc.user_id', '=', 'u.user_id'); // 検索条件例 if ($request->filled('contract_id')) { $q->where('rc.contract_id', $request->input('contract_id')); } if ($request->filled('name')) { $q->where('u.user_name', 'like', '%' . $request->input('name') . '%'); } // タグ・QR(完全一致、空白なら絞り込まない) if ($request->filled('tag_qr_flag') && $request->input('tag_qr_flag') !== '') { $q->where('rc.tag_qr_flag', $request->input('tag_qr_flag')); } // ソート処理 $sort = $request->input('sort', 'rc.contract_id'); $sortType = $request->input('sort_type', 'desc'); // カラム名のバリデーション(必要に応じて拡張) $allowSorts = ['rc.contract_id']; if (!in_array($sort, $allowSorts)) { $sort = 'rc.contract_id'; } $sortType = ($sortType === 'asc') ? 'asc' : 'desc'; $rows = $q->orderBy($sort, $sortType)->paginate(20)->withQueryString(); return view('admin.contractor.list', compact('rows', 'sort', 'sortType')); } /** * 詳細表示 */ public function info($id) { $contract = DB::table('regular_contract as rc') ->select([ 'rc.*', 'p.park_name', 'u.user_name', 'u.user_phonetic', 'u.user_mobile', 'u.user_homephone', 'u.user_primemail', 'u.user_gender', 'u.user_birthdate', 'u.user_regident_city', ]) ->leftJoin('park as p', 'rc.park_id', '=', 'p.park_id') ->leftJoin('user as u', 'rc.user_id', '=', 'u.user_id') ->where('rc.contract_id', $id) ->first(); if (!$contract) { abort(404); } return view('admin.contractor.info', compact('contract')); } }