سلام دوستان
قصد نوشتن یک قسمت جستجوی سایت رو داریم بنظرتون روشی که توی زیر توضیح میدم اصولی و بهینه هستش یا خیر؟
ببینید روش به این صورته که کابر وقتی کلیک کرد روی یکی از گزینه های فیلتر متد سرچ اجرا میشه و متد سرچ هم به این روشه که یک کویری اصلی داره با تعدادی شروط که اگه یکی از فیلترها فعال بود این قسمت از کویری رو هم لحاظ کنه در غیر اینصورت این قسمت رو اسکیپ کنه...نمونه کد:البته این سرچ اپشن های زیادی داره بنظرتون این متد و نهایتا کویری آخر کد بهینه هست یا روش بهتری هست؟ ممنون
البته این فقط نمونه کد هستش و متد اصلی اصولی تر نوشته خواهد شد و تمیزتر....
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 کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟