یه برنامه نویس وب که شدید علاقه داره به یادگیری بیشتر توی زمینه کاریش و مسائل مرتبط با آی.تی و تکنولوژی :))
نوشتن جستجوی پیشرفته در لاراول 5
جستجوی پیشرفته آپشنیه که توی اکثر سایتها مخصوصا سایتهای فروشگاهی و یا سایتهایی که مطالبشون دسته بندی دارن وجود داره و به کاربرها این امکان رو میده که بصورت دقیقتر یک مطلب یا محصول خاص رو پیدا کنند. از اونجایی که این سوال توی گروههای برنامه نویسی زیاد پرسیده میشه تصمیم گرفتم آموزشش که خیلی خیلی هم سادست رو بنویسم.
فرض کنید شما یه جدول محصولات با نام products دارید و هر محصول چندتا ویژگی به این شرح داره:
نام محصول = name
رنگ = color
سایز = small-big-medium
وزن = weight
حالا برای نوشتن یه جستجوی ساده با توجه به ورودی کاربر که نام محصول در نظر گرفته شده کوئری ما به این شکل خواهد بود:
$query= Product::where('name', 'like', '%' . $name . '%');
کوئری بالا هر محصولی که کلمه کلیدی سرچ شده رو داشته باشه برمیگردونه. برای پیشرفته تر کردن عملیات جستجو کدهای زیر رو هم اضافه میکنیم.
if(!empty($color)) $query->where('product.color', $color);
if(!empty($size)) $query->where('product.size', $size);
if(!empty($weight)) $query->where('product.weight', $color);
به همین راحتی! توی شرطهای بالا چک میشه که اگه مقادیر ارسالی از طریق فرم جتسجو، خالی نبود به ازای هر فیلد جستجوی دقیقتری انجام بشه. کدهای بالا در حالتی که همه موارد توسط کاربر با مقادیر فرضی ارسال بشه معادل کد SQL زیر خواهد بود.
SELECT * FROM 'products' WHERE name LIKE '%laptop%' && color='black' && size='small' && weight='light'
نکته ها:
- هر $query->where(); معادل یک عملگر AND در نظر گرفته می شود.
- برای نوشتن عملگر OR از orWhere استفاده کنید مثل:
$query->orWhere('product.color', $color);
مطلبی دیگر از این انتشارات
ایجاد یک سایت دو زبانه در لاراول
مطلبی دیگر از این انتشارات
مقایسه بین فریم ورک سیمفونی و لاراول
مطلبی دیگر از این انتشارات
نوشتن trait در لاراول