我在表
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");
}