在 Laravel 的数据表服务器中搜索状态列

问题描述 投票:0回答:0

我在表

status
[Status (bit, not null)]
中有一个字段,其值为
1/2
。我使用了服务器端处理并更改了
status
列以显示
Paid/Dues
。但是如果我写
Dues

在搜索框中是搜索不到的
$(document).ready(function () {
        var table = $('.purchase-table').DataTable({
            processing: true,
            serverSide: true,
            ajax: "{{ route('invoices.index') }}",
            columns: [
                {data: 'invoice_id', name: 'invoices.id', orderable: true},
                {data: 'invoice_no', name: 'invoice_no', orderable: true},
                {data: 'chassis', name: 'purchase.chassis', orderable: true},
                {data: 'invoice_date', name: 'invoices.invoice_date', orderable: true},
                {data: 'customer_name', name: 'invoices.customer_name', orderable: true},
                {data: 'total_price', name: 'invoices.total_price', orderable: true},
                {data: 'total_paid', name: 'invoices.total_paid', orderable: true},
                {data: 'total_discount', name: 'invoices.total_discount', orderable: true},
                {data: 'balance_due', name: 'invoices.balance_due', orderable: true},
                {data: 'status', name: 'status'},
                {data: 'action', name: 'action', orderable: false, searchable: false},
            ],
            dom: 'Bfrtip',
            "footerCallback": function (tfoot, data, start, end, display) {
                var api = this.api();

                var intVal = function (i) {
                    return typeof i === 'string' ? i.replace(/[\$,]/g, '') * 1 : typeof i === 'number' ? i : 0;
                };

                total = api
                    .column(8)
                    .data()
                    .reduce(function (a, b) {
                        return intVal(a) + intVal(b);
                    }, 0);

                $(api.column(8).footer()).html(total + '.00');
            },
            columnDefs: [
                { type: 'natural', targets: 1 }
            ],
            order: [[ 0, "desc" ]],
            buttons: [
                { extend: 'pageLength', className: 'btn btn-primary buttons-copy buttons-html5'},
            ],
            language: {
                sLengthMenu: "_MENU_ entries",
                searchPlaceholder: "Search",
                search: ""
            }
        });
        table.column( 0 ).visible( false );

    });

这是服务器端代码

if ($request->ajax()) {
        $data = DB::table('invoices')->leftJoin('invoice_items', 'invoice_items.invoice_id', '=', 'invoices.id')
            ->leftJoin('purchase', 'invoice_items.purchase_id', '=', 'purchase.id')
            ->select([
                'purchase.chassis', 'invoices.customer_name', 'invoices.invoice_date', 'invoices.total_price', 'invoices.total_paid', 'invoices.total_discount', 'invoices.balance_due',
                'invoices.status',
                'invoices.id as invoice_id'
            ]);

        return Datatables::of($data)
            ->addIndexColumn()
            ->addColumn('invoice_no', function($row){
                return "SI-" . $row->invoice_id;
            })
            ->addColumn('status', function($row){
                if ($row->status == 1)
                    $status = "<label class='badge badge-success'>Paid</label>";
                else
                    $status = "<label class='badge badge-danger'>Bal Dues</label>";
                return $status;
            })
            ->addColumn('action', function ($row) {

                $items = InvoiceItem::where('invoice_id', $row->invoice_id)->get();
                $itemsCount = $items->count();

                $btn = '<a href="' . route('invoices.edit', $row->invoice_id) . '"><i class="fe fe-printer me-2"></i></a>';

                $btn = $btn . '<a href="' . route('invoices.edit', $row->invoice_id) . '"><i class="fe fe-eye"></i> View ('. $itemsCount .')</a>';
                //endcan
                return $btn;
            })
            ->rawColumns(['invoice_no', 'action', 'status'])
            ->make(true);
    }

    return view("invoices.index");
}
laravel search datatables
© www.soinside.com 2019 - 2024. All rights reserved.