预先输入仅适用于数据库中的“名称”字段,需要建议

时间:2018-06-29 15:11:05

标签: typeahead.js

在我的第一个Laravel项目中开始使用Typeahead。这是我想做的:

我有一个要使用typeahead.js自动完成的搜索字段。

这是在我的项目中可以正常工作的js,但我需要对其进行自定义:

var path = "{{ route('autocomplete.ajax') }}";
$('#search_school').typeahead({
     minLength: 2,
    source:  function (query, process) {
    return $.get(path, { query: query }, function (data) {
            return process(data);
        });
    }
});

这是我的sql查询的样子(它从 name 字段和 postcode 字段搜索表的 Schools 部分):

public function autocomplete(Request $request)
{
    $schools = Schools::where('name','like',"%{$request->input('query')}%")
    ->orWhere('postcode','like',"%{$request->input('query')}%")
    ->get();
    return response()->json($schools);
}

想法很简单-我在搜索字段中输入了学校名称的一部分,并且一切正常-提前输入即可获得带有学校名称的下拉列表。

但是,如果我输入邮政编码,则不会得到任何结果。三个问题:

  1. 我在做什么,为什么没有显示邮政编码结果?
  2. 预输入如何“知道”它需要显示名称,即使它 查询中包含更多数据(例如ID,邮政编码,地址等)
  3. 如何自定义结果以显示名称和其他数据(例如 地址-学校名称)?

P.S。名称和邮政编码字段均为varchar。数据库查询很好-如果我直接转到route(autocomplete.ajax)并搜索邮政编码,它将显示正确的结果,因此js一定有问题。

谢谢!

0 个答案:

没有答案