public function searchAdverts(Request $request) { $input = $request->input('search'); $searchTerms = explode(' ', $input); foreach ($searchTerms as $term) { $query = Adverts::join('adverts_tag', 'adverts.id', '=', 'adverts_tag.adverts_id')->join('tags', 'tags.id', '=', 'adverts_tag.tag_id')->where('adverts.title', 'LIKE', '%' . $term . '%')->orWhere('content', 'LIKE', '%' . $term . '%')->orWhere('tags.name', 'like', '%' . $term . '%')->with('tags')->distinct()->orderBy('created_at', 'DESC'); } $adverts = $query->notExpired()->get(['adverts.*']); $tags = $this->searchByTags($searchTerms); return view('adverts.searchindex', compact('adverts', 'input', array('tags'))); }