首页 > 解决方案 > 如果表列名称不是“名称”,则使用 Jquery 的 Laravel 自动完成不会获取数据

问题描述

我正在使用 Jquery 和 Laravel 5.7 来制作自动完成功能。

我有一个名为“定价”的表,该表中没有名为“名称”的列。当我搜索关键字时,它什么也不返回。

<script>
   $(document).ready(function() {
   $( "#search" ).autocomplete({

    source: function(request, response) {
        $.ajax({
        url: "{{url('autocomplete')}}",
        data: {
                term : request.term
         },
        dataType: "json",
        success: function(data){
           var resp = $.map(data,function(obj){
                //console.log(obj.city_name);
                return obj.name;
           }); 

           response(resp);
        }
    });
},
minLength: 1
 });
});
 </script>

这是我的控制器:

public function search(Request $request)
    {
        $search = $request->get('term');

        $result = DB::table('pricings')->where('title', 'LIKE', '%'.$search.'%')->get();

        return response()->json($result); 
    }

表数据

我表中的数据

输出 输出

但是,如果我将表列名从 TITLE 更改为 NAME 它会返回数据

如果没有名为“名称”的列,我如何从任何列中获取数据?

标签: laravelautocompletejquery-ui-autocomplete

解决方案


在您的success回调中ajax,您正在检查name,您应该寻找title数据库表中的列。

        success: function(data){
           var resp = $.map(data,function(obj){
                //console.log(obj.city_name);
                return obj.title;  //This should be title instead of name.
            }); 

推荐阅读