با سلام خدمت دوستان
من برای سرچ در لاراول از پکیجی استفاده نکردم چون فقط یک فیلتر دارم
مشکلم اینجاست که دقیق سرچ نمیکنه مثلا برای سرچ " کتاب پرواز دوران " اگر " کتاب دوران "بزنم چیزی نمیاره
کدم رو هم اینجوری نوشتم
$products=Product::orderby('id' , 'desc')->where('name', 'like', "%".$name."%")->paginate(100);
خوب طبیعیه !!!
% این ها اصلا کاربردشون چیه ؟ این مقاله را بخوانید . mysql داره دنبال کلمه "کتاب دوران" میگرده و به شما خروجی میده . اینها کاملا به هم پیوسته هستند . پس نمیتونه "کتاب پرواز دوران" رو برگردونه
سلام
کلیدواژه ای که دنبالش هستید fuzzy search هست. یک مقدار سرچ کنید تا با کلیت و مفهومش آشنا بشید.
و بعد نگاهی به پکیج های ارائه شده برای پیاده سازی این مبحث توسعه داده شده اند بندازید. احتمالا به شکل کامل نیازتون رو برآورده خواهند کرد.
چند مثال:
https://github.com/mattkingshott/quest
https://github.com/highsolutions/laravel-searchy
$users = Searchy::search('users')->fields('name', 'email')->query('John Smith')
->getQuery()->having('relevance', '>', 20)->get();
لیست پکیج های مرتبط:
https://packagist.org/?query=fuzzy%20search&tags=laravel
سلام به شما دوست عزیز.
تگ input باید به صورت زیر باشد:
<form action="">
<input type="text" name="search" value="{{ request('search') }}">
</form>
کنترلر مربوطه هم به صورت زیر بنویسید:
$products = Product::query();
if ($keyword = request('search')) {
$products->where('name', 'LIKE', "%{$keyword}%");
}
$products = $products->latest()->paginate(100);
موفق باشید.
سلام
علامت درصد باید به ازای هر کلمه گذاشته بشه.یعنی به ازای هر کلمه باید اطرافش علامت درصد باشه.همون فاز به فاز خودمون.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟