Yajra数据表全局搜索无法正常工作

时间:2018-01-16 21:43:35

标签: php database laravel datatable yajra-datatable

Yajra Datatable全局搜索无效。

  

控制器代码

public function getTable() {
        $query = Customer::query();
        return Datatables::of($query)
            ->addColumn('name', function ($query) {
                return "$query->name";
            })
            ->addColumn('number', function ($query) {
                return "$query->number";
            })
            ->addColumn('category', function ($query) {
                return "$query->category";
            })
            ->addColumn('customer_fields', function ($query) {
                return "asd";
            })
            ->addColumn('address', function ($query) {
                return "".customerAddressFormatHelper($query -> address, $query -> location_name)."";
            })
            ->addColumn('created_at', function ($query) {
                return "$query->created_at";
            })
            ->addColumn('action', function ($query) {
                return "<a href='".route('customers.show', $query -> id)."' class='btn btn-primary'><i class='fa fa-eye'></i> </a>";
            })
            ->escapeColumns(['action'])
            ->make(true);
    }
  

JS代码

$(document).ready(function() {
            $('#customer_table').DataTable( {
                dom: 'Bfrtip',
                buttons: [
                    'print',
                    'copyHtml5',
                    'excelHtml5',
                    'csvHtml5',
                    'pdfHtml5'
                ],
                processing: true,
                serverSide: true,
                ajax: '{{ route('customers.table') }}',
                columns: [
                    {data: 'name',              name: 'name'},
                    {data: 'number',            name: 'number'},
                    {data: 'category',          name: 'category'},
                    {data: 'customer_fields',   name: 'customer_fields'},
                    {data: 'address',           name: 'address'},
                    {data: 'created_at',        name: 'created_at'},
                    {data: 'action',            name: 'action'},
                ]
            } );
        } );

一切正常,没有错误或任何问题,但问题是全局搜索始终在网络标签中返回相同数量的结果。

  

我尝试过:

我尝试将$query = Customer::query();代码替换为$query = Customer::all();代码,该代码完美无缺,搜索效果非常好。

问题是在我添加all()方法后,它变得非常慢,因为我使用的是集合而不是查询构建器。

1 个答案:

答案 0 :(得分:0)

你可以试试这个:

public function getTable() {
        $query = Customer::query();
        return Datatables::of($query)
            ->addColumn('customer_fields', function ($query) {
                return "asd";
            })
            ->addColumn('address', function ($query) {
                return "".customerAddressFormatHelper($query -> address, $query -> location_name)."";
            })
            ->addColumn('action', function ($query) {
                return "<a href='".route('customers.show', $query -> id)."' class='btn btn-primary'><i class='fa fa-eye'></i> </a>";
            })
            ->escapeColumns(['action'])
            ->make(true);
    }

让我知道这是否有效。