query('q', '')); $posts = Post::query() ->published() ->with('author') ->when($q !== '', function ($qb) use ($q) { $qb->where(function ($sub) use ($q) { $sub->where('title', 'like', "%{$q}%") ->orWhere('excerpt', 'like', "%{$q}%"); }); }) ->latest('published_at') ->paginate(9) ->withQueryString(); return view('blog.index', [ 'posts' => $posts, 'filters' => ['q' => $q], ]); } public function show(Post $post): View { abort_unless($post->is_published, 404); $post->load('author'); $relatedPosts = Post::query() ->published() ->where('id', '!=', $post->id) ->latest('published_at') ->limit(3) ->get(); return view('blog.show', compact('post', 'relatedPosts')); } }