【发布时间】:2018-10-26 15:46:29
【问题描述】:
我有一个上下文,其中有一个存储会议的会议表。会议桌有一列“城市”。
我有下面使用 jquery 自动完成和 laravel 的代码,以便用户可以在输入文本中输入例如 2 个字母,如“co”,它会出现在输入文本中,名称为“co”的会议结果,以及如果有城市也有像“co”这样的名字应该出现。但是有两个问题:
- 首先,当用户在输入中写入例如“co”并且有一个名称为“conf”的会议时,它会出现在自动完成输入“conf conf”中,而不仅仅是“conf”。
- 对于不工作的城市,如果有一个城市“Newcastle”并且用户写“Ne”,则输入类型文本中不会出现结果。
你知道为什么吗?
class AutocompleteController extends Controller
{
public function search(Request $request){
$search = $request->term;
$conferences = Conference::where('name', 'LIKE', '%'.$search.'%')
->orWhere('city', 'LIKE', '%'.$search.'%')
->get();
$data= [];
foreach ($conferences as $key => $value){
$data[] = ['id'=> $value->id, 'value' => $value->name . " " . $value->name];
}
return response($data);
}
}
路线:
Route::get('/autocomplete-search', 'AutocompleteController@search');
jQuery:
$("#search").autocomplete({
source: "{{ URL::to('autocomplete-search') }}",
minLength: 2,
select:function(key, value)
{
console.log(value);
}
});
搜索输入:
<div class="col col-md-6">
<h4 class="text-white text-center font-weight-bold">Search</h4>
<form class="main-search">
<input type="text" id="search" class="autocomplete dropdown-toggle" placeholder="Conference, Citiy, Category">
</form>
</div>
对于第二个问题,当用户输入“Ne”时,它会显示城市为“Newcastle”的会议的标题。但是应该出现的是带有“Ne”的城市的城市名称,例如“Newcastle”。你知道如何实现吗?
【问题讨论】:
-
我不知道你是如何在 Laravel 中做到这一点的,但你基本上需要有一个条件
SELECT来选择name当它与搜索匹配时,以及city当这就是与搜索匹配的内容。如果 both 名称 和 城市匹配,你想做什么?