2

Yajra 数据表全局搜索不起作用。

控制器代码

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()方法之后它变得非常非常慢,因为我使用的是集合而不是查询生成器。

4

1 回答 1

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);
    }

让我知道这是否有效。

于 2021-06-16T06:08:15.200 回答