where('slug', $threadSlug)->first(); $topic = Topic::where('slug', $topicSlug)->first(); $topic->views_no = $topic->views_no+1; $topic->save(); $posts = Post::with('author')->where('topic_id', $topic->id)->paginate(15); return view('forum.topics.show', compact('thread', 'topic', 'posts')); } public function create(string $categorySlug, string $threadSlug) { // check policy $forumCategories = Category::get(); $forumThreads = Thread::get(); $currentThread = Thread::with('category')->where('slug', $threadSlug)->first(); return view('forum.topics.create', compact('forumCategories', 'forumThreads', 'currentThread')); } public function store(TopicRequest $request, string $categorySlug, string $threadSlug) { // check policy $thread = Thread::with('category')->where('slug', $threadSlug)->first(); $topic = Topic::create([ 'name' => $request->get('name'), 'slug' => Str::slug($request->get('name')), 'status' => Topic::STATUS_OPEN, 'category_id' => $thread->category->id, 'thread_id' => $thread->id, 'user_id' => auth()->user()->id, ]); Post::create([ 'content' => $request->get('content'), 'user_id' => auth()->user()->id, 'category_id' => $thread->category->id, 'thread_id' => $thread->id, 'topic_id' => $topic->id, ]); return redirect()->route('forums.thread.topics.show', [$categorySlug, $threadSlug, $topic->slug]); } public function edit(string $categorySlug, string $threadSlug, string $topicSlug) { // check policy } public function update(TopicRequest $request) { // check policy } public function destroy() { // check policy } }