带有多个模型的Laravel Ajax实时搜索查询

阿里·奥森

目前,我正在尝试进行实时搜索。用户开始输入时,结果将显示在文本输入字段下。仅适用于一种模型,即可完美运行。但是,如果我想在多个模型中搜索,则无法显示任何结果。

那就是我到目前为止所做的。这适用于一个模型。

public function autoComplete(Request $request) {
    $query = $request->get('term','');

    $news=News::where('title','LIKE','%'.$query.'%')->get();

    $data=array();
    foreach ($news as $new) {
        $data[]=array('value'=>$new->title,'id'=>$new->id);
    }
    if(count($data))
        return $data;
    else
        return ['value'=>'No Result Found','id'=>''];
}

但这不是。

public function autoComplete(Request $request) {
    $query = $request->get('term','');

    $news=News::where('title','LIKE','%'.$query.'%')->get();
    $products=Product::where('title', 'LIKE', '%'.$query.'%')->get();
    $searchResults = array_merge($news->toArray(), $products->toArray());

    $data=array();
    foreach ($searchResults as $results) {
        $data[]=array('value'=>$results->title,'id'=>$results->id);
    }
    if(count($data))
        return $data;
    else
        return ['value'=>'No Result Found','id'=>''];
}

同样那也不起作用。

    $news = News::orderBy('order', 'asc')->get();
    $products= Product::orderBy('order', 'asc')->get();
    $results = array();
    $results['products'] = $sliders;
    $results['news'] = $news;

如果有人帮助,我会很高兴。我现在什么也不能做。我只想在多个模型中搜索,就像在一个模型中搜索一样。

这也是我的JavaScript代码。

<script>
$(document).ready(function() {
    src = "{{ route('searchajax') }}";
    $("#search_text").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: src,
                dataType: "json",
                data: {
                    term : request.term
                },
                success: function(data) {
                    response(data);
                    for (var i=0; i<data.length; i++) {
                        console.log(data[i]['value']);}
                }
            });
        },
        minLength: 2,
    });
});

视图:

<form action="#">
   <i class="fa fa-search c-gray-1-dark f-27 pl-10px"></i>
   <input type="text" name="search_text"  id="search_text" value="{{ old('title') }}" />
</form>
奇拉格·帕特尔(Chirag Patel)

为了合并结果,您可以试试这个

public function autoComplete(Request $request) {
    $query = $request->get('term','');

    $news=News::where('title','LIKE','%'.$query.'%')->get();
    $products=Product::where('title', 'LIKE', '%'.$query.'%')->get();

    $searchResults = $news->merge($products);

    $data=array();
    foreach ($searchResults as $results) {
        $data[]=array('value'=>$results->title,'id'=>$results->id);
    }
    if(count($data))
        return $data;
    else
        return ['value'=>'No Result Found','id'=>''];
}

希望这会帮助你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章