目前我正在尝试进行实时搜索。当用户开始输入时,结果将出现在文本输入字段下。对于一个型号,它的工作完美。但是,如果我想在多个模型中搜索,则无法显示任何结果。
到目前为止我做了什么。这适用于一个模型。
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>
答案 0 :(得分:3)
对于合并结果,您可以尝试此
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'=>''];
}
希望这会对你有所帮助。