1. 程式人生 > 實用技巧 >Laravel 連結串列查詢多條件檢索

Laravel 連結串列查詢多條件檢索

public function contractList()
    {
        if (!Auth::guard('admin')->user()->can('admin_yun_user_contract_list', YunUserBorrow::class)) {
            return BaseController::hasPower('list');
        }

        $limit = (int)Input::get('limit', 15);
        //查詢條件
        $name = Input::get('name');
        
$created_at = Input::get('created_at'); $work_no = Input::get('work_no'); $status = Input::get('status'); $id_no = Input::get('id_no'); //拆解一行一個止 //名字拆分 if ($name) { $name_arr = array_unique(preg_split('/\s+/', $name)); } else {
$name_arr = []; } if ($work_no) { $work_no_arr = array_unique(preg_split('/\s+/', $work_no)); } else { $work_no_arr = []; } if ($id_no) { $id_no_arr = array_unique(preg_split('/\s+/', $id_no)); } else { $id_no_arr
= []; } $list = ESignLog::leftjoin('yun_user_entry', 'yun_user_entry.id', '=', 'e_sign_logs.user_id') ->select('e_sign_logs.*', 'yun_user_entry.name', 'yun_user_entry.work_no') ->when($name_arr, function ($query) use ($name_arr) { return $query->whereIn('yun_user_entry.name', $name_arr); })->when($work_no_arr, function ($query) use ($work_no_arr) { return $query->whereIn('yun_user_entry.work_no', $work_no_arr); })->when($id_no_arr, function ($query) use ($id_no_arr) { return $query->whereIn('yun_user_entry.id_no', $id_no_arr); }) ->when(isset($status), function ($query) use ($status) { $query->where('e_sign_logs.status', $status); }) ->when($created_at, function ($query) use ($created_at) { $created_at_time = explode('至', $created_at); $start_day = $created_at_time[0]; $end_day = $created_at_time[1] . ' 23:59:59'; $query->where('e_sign_logs.created_at', '>=', $start_day); $query->where('e_sign_logs.created_at', '<=', $end_day); }) ->orderBy('id', 'desc') ->paginate($limit); if ($list) { $list = $list->toArray(); foreach ($list['data'] as $key => $val) { $list['data'][$key]['dst_file_path'] = asset($val['dst_file_path']); } } return Response::json($list); }