Мы используем Laravel 8 для электронной коммерции. Встроенные поисковые запросы в категориях продуктов, тегах, названии продукта, SKU и брендах. И его буферизация так много для появления результата. И после появления результата его снова автоматически запрашивают. И результаты поиска не остаются, если я размесчу пространство после поиска ключевым словом, то он появится точный результат. p>
Я вставлю полный код для поиска здесь: < /p>
fecult ajax function: < /strong> < /p>
$('#search').on('keyup input change', function(){
search();
});
$('#search').on('focus', function(){
search();
});
function search(){
var searchKey = $('#search').val();
if(searchKey.length > 0){
$('body').addClass("typed-search-box-shown");
$('.typed-search-box').removeClass('d-none');
$('.search-preloader').removeClass('d-none');
$.post('{{ route('search.ajax') }}', { _token: AIZ.data.csrf, search:searchKey}, function(data){
if(data == '0'){
// $('.typed-search-box').addClass('d-none');
$('#search-content').html(null);
$('.typed-search-box .search-nothing').removeClass('d-none').html('Sorry, nothing found for "'+searchKey+'"');
$('.search-preloader').addClass('d-none');
}
else{
$('.typed-search-box .search-nothing').addClass('d-none').html(null);
$('#search-content').html(data);
$('.search-preloader').addClass('d-none');
}
});
}
else {
$('.typed-search-box').addClass('d-none');
$('body').removeClass("typed-search-box-shown");
}
}
контроллер поиска:
public function ajax_search(Request $request)
{
$keywords = array();
$products = Product::where('published', 1)->where('name', 'like', '%'.$request->search.'%')->get();
foreach ($products as $key => $product) {
foreach (explode(',',$product->name) as $key => $tag) {
if(stripos($tag, $request->search) !== false){
if(sizeof($keywords) > 4){
break;
}
else{
if(!in_array(strtolower($tag), $keywords)){
array_push($keywords, strtolower($tag));
}
}
}
}
}
$products = filter_products(Product::query());
$products = $products->where('published', 1)
->where(function ($q) use($request) {
$q->where('name', 'LIKE', '%'.$request->search.'%');
})
->get();
// $categories = Category::where('name', 'like', '%'.$request->search.'%')->get()->take(3);
// $shops = Shop::whereIn('user_id', verified_sellers_id())->where('name', 'like', '%'.$request->search.'%')->get()->take(3);
if(sizeof($keywords)>0 || sizeof($products)>0){
return view('frontend.partials.search_content', compact('products', 'keywords'));
}
return '0';
}
Подробнее здесь: https://stackoverflow.com/questions/705 ... arch-issue