public function category(Request $request) { $lastSegment = preg_split("/\\//", $request->url()); $categorySlug = array_pop($lastSegment); // get the last segment on the current url $category = Tag::where('slug', $categorySlug)->first(); // check if there is no category found. if (!$category) { return redirect()->route('front.error-404'); } // condition where clause for parent categories or child. if ($category->parent_id == 0) { $field = 'tags.parent_id'; $value = $category->id; } else { $field = 'tags.slug'; $value = $category->slug; } // Get posts by PostTag slug or parent_id field $properties = Post::join('post_tags', 'posts.id', '=', 'post_tags.post_id')->join('tags', 'post_tags.tag_id', '=', 'tags.id')->where($field, $value)->select('posts.*', 'tags.name as tagName')->paginate(config('front.postPerPage')); $pageTitle = 'Category: ' . $category->name; if ($category->parent_id == 0) { $breadcrumbData = [['url' => url(), 'name' => 'Home'], ['url' => route('front.category') . '/' . $category->slug, 'name' => $category->name]]; } else { $breadcrumbData = [['url' => url(), 'name' => 'Home'], ['url' => route('front.category', $category->parent()->slug), 'name' => $category->parent()->name], ['url' => route('front.category') . '/' . $category->parent()->slug . '/' . $category->slug, 'name' => $category->name]]; } return view('properties', compact('properties', 'pageTitle', 'breadcrumbData')); }
public function searchAdvance(Request $request) { $country = $request->get('country'); $location = $request->get('location'); $type = $request->get('type'); $minPrice = $request->get('min_price'); $maxPrice = $request->get('max_price'); $properties = Post::join('postmeta', function ($join) use($country, $location) { $join->on('posts.id', '=', 'postmeta.post_id')->where('postmeta.meta_value', '=', $country); })->select('posts.*', 'postmeta.meta_key', 'postmeta.meta_value')->paginate(config('front.postPerPage')); //TODO: some more work to do especially for type, minimum price and maximum price. $pageTitle = 'Advance Search Result'; return view('properties', compact('properties', 'pageTitle')); }
public function handle() { $post = Post::where('slug', $this->slug)->first(); if (!$post) { return redirect()->route('front.error-404'); } $postTagIds = array(); if (count($post->postTags) > 0) { foreach ($post->postTags as $postTag) { $postTagIds[] = $postTag->tag_id; } } // Retrieve related posts by specific tags $relatedPosts = Post::join('post_tags', 'posts.id', '=', 'post_tags.post_id')->join('tags', 'post_tags.tag_id', '=', 'tags.id')->whereIn('post_tags.tag_id', $postTagIds)->orderByRaw('RAND()')->take(10)->select('posts.*', 'tags.name as tagName')->take(3)->distinct()->get(); return view('property', compact('post', 'relatedPosts')); }