json
2 سال پیش توسط json مطرح شد
0 پاسخ

نوشتن صفحه سرچ اصولی

سلام دوستان
قصد نوشتن یک قسمت جستجوی سایت رو داریم بنظرتون روشی که توی زیر توضیح میدم اصولی و بهینه هستش یا خیر؟
ببینید روش به این صورته که کابر وقتی کلیک کرد روی یکی از گزینه های فیلتر متد سرچ اجرا میشه و متد سرچ هم به این روشه که یک کویری اصلی داره با تعدادی شروط که اگه یکی از فیلترها فعال بود این قسمت از کویری رو هم لحاظ کنه در غیر اینصورت این قسمت رو اسکیپ کنه...نمونه کد:البته این سرچ اپشن های زیادی داره بنظرتون این متد و نهایتا کویری آخر کد بهینه هست یا روش بهتری هست؟ ممنون
البته این فقط نمونه کد هستش و متد اصلی اصولی تر نوشته خواهد شد و تمیزتر....

public function doSearch()
    {
        $category = Category::where('id', $_GET['category_id'])->first();
        $catId = $category['id'];
        $brands = [];
        $brandsFirst = DB::table('products')->where('category_id', $category->id)->distinct()->get(['brand']);
        foreach ($brandsFirst as $key => $value) {
            $brands[$key] = $value->brand;
        }

        $mojudi = -1;
        if (isset($_GET['mojudi'])) {
            $mojudi = 0;
        }

        $takhfif = -1;
        if (isset($_GET['takhfif'])) {
            $takhfif = 0;
        }

        $priceEx = explode(',', $_GET['priceRange']);
        $min = $priceEx[0] . '000';
        $min2 = $priceEx[0];
//            dd($priceEx);
        $max = $priceEx[1] . '000';
        $max2 = $priceEx[1];

        $orderBy1 = '';
        $o1 = $_GET['orderBy1'];
        $o2 = $_GET['orderBy2'];
        if (isset($_GET['orderBy1'])) {
            $orderBy1 = '  order By ' . $_GET['orderBy1'] . ' ' . $_GET['orderBy2'] . '  ';
        }

        $brand2 = '';
        $finalBrand = [];
        $selectedBrands = [];
        if (isset($_GET['brand'])) {
            $finalBrand = $_GET['brand'];
            $selectedBrands = $_GET['brand'];
            foreach ($finalBrand as $key => $value) {
                $finalBrand[$key] = $value;
            }
        }

        $products = Product::where('category_id', $catId)
            ->where('mojudi', '>', $mojudi)
            ->where('discount', '>', $takhfif)
            ->whereBetween('price', [$min + 0, $max + 0])
            ->when(isset($_GET['brand']), function ($query) use ($finalBrand) {
                $query->whereIn('brand', $finalBrand);
            })
            ->orderBy($o1, $o2)
            ->paginate(3);

//        dd($products);

        $catParent = Category::where('id', $category['parent_id'])->first();
        return view('search.index', compact('products', 'brands', 'category', 'catParent', 'min2', 'max2', 'selectedBrands'));
    }

@endworld
@shift.delete
@hekmati
@PWR @alirezadini @arminamirinasab
@MrMobin @TGame


ثبت پرسش جدید

به همدیگه کمک کنیم

به json کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام