public function browse(Request $request, $category = null) { // get categories $categories = Category::orderBy('id', 'desc')->get(); // get jobs if ($category != null) { $cat = Category::where('name', '=', $category)->first(); $jobs = $cat->jobs; } else { $jobs = Jobs::query(); // set condition category if ($request->has('category')) { $cat = Category::where('name', '=', $request->get('category'))->first(); $jobs = $cat->jobs(); } // set condition state if ($request->has('state')) { $jobs->where('state', '=', $request->get('state')); } // set condition keywords if ($request->has('keywords')) { $searchWords = explode(' ', $request->get('keywords')); foreach ($searchWords as $word) { $jobs->orWhere('description', 'LIKE', '%' . $word . '%'); } } $jobs = $jobs->orderBy('id', 'desc')->get(); } return view('jobs.browse')->with('jobs', $jobs)->with('jobsCount', Jobs::count())->with('categories', $categories); }