query('q', '')); $user = $request->user(); $results = [ 'articles' => collect(), 'products' => collect(), 'glossary' => collect(), 'threads' => collect(), ]; $total = 0; if ($q !== '') { $like = '%' . $q . '%'; $results['articles'] = Article::visiblePublic() ->where(function ($query) use ($like) { $query->where('title', 'like', $like) ->orWhere('summary', 'like', $like) ->orWhere('body', 'like', $like); }) ->orderByDesc('published_at') ->limit(10) ->get(); $results['products'] = Product::published() ->where(function ($query) use ($like) { $query->where('name', 'like', $like) ->orWhere('summary', 'like', $like) ->orWhere('description', 'like', $like) ->orWhere('model', 'like', $like); }) ->limit(10) ->get(); $results['glossary'] = GlossaryTerm::query() ->where(function ($query) use ($like) { $query->where('term', 'like', $like) ->orWhere('definition', 'like', $like) ->orWhere('aliases', 'like', $like); }) ->orderBy('term') ->limit(10) ->get(); $results['threads'] = ForumThread::visible($user) ->where(function ($query) use ($like) { $query->where('title', 'like', $like) ->orWhere('body', 'like', $like); }) ->orderByDesc('last_reply_at') ->limit(10) ->get(); $total = $results['articles']->count() + $results['products']->count() + $results['glossary']->count() + $results['threads']->count(); } return view('search.index', compact('q', 'results', 'total')); } }