/** * Display a listing of the resource. * * @return Response */ public function index(Request $request) { $data['tags'] = Tag::whereHas('events', function ($query) { $query->upcoming(); })->orderBy('name')->get(); if (!$request->tags) { $data['events'] = Event::with('venue', 'tags')->upcoming()->simplePaginate(10); } else { $events = Event::with('venue'); foreach (explode(',', $request->tags) as $tag) { $events->whereHas('tags', function ($query) use($request, $tag) { $query->where('slug', $tag); }); } $data['events'] = $events->upcoming()->simplePaginate(10)->appends(['tags' => $request->tags]); } return view('events.index', $data); }