在Laravel项目中DataTable过滤(搜索)add_column

我的项目(在Laravel 5中内置)中使用DataTable Bootstrap Jquery呈现的表有问题。

搜索(过滤)适用于从SQL查询生成的列,但是对于使用add_column生成的列不起作用。

来自php文件的javascript代码:

var oTable; $(document).ready(function() { oTable = $('#table').dataTable({ "sDom" : "<'row'r>t<'row'>", "sPaginationType" : "bootstrap", "bProcessing" : true, "bServerSide" : true, "sAjaxSource" : "{{ URL::to('employee/outputs/data/'.$invoice_status) }}", "fnDrawCallback" : function(oSettings) { $(".iframe").colorbox({ iframe : true, width : "60%", height : "60%", onClosed : function() { window.location.reload(); } }); } }); }); 

Laravel控制器的代码:

 public function data($invoice_status) { $outputs = Output::join('my_companies', 'my_companies.id', '=', 'outputs.my_company_id') ->join('my_branches', 'my_branches.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_branches.name as my_branch_name', 'outputs.output_at', 'outputs.invoice_id', 'outputs.customer_type')) ->where('outputs.invoice_status', $invoice_status) ->where('outputs.is_deleted', false) ->orderBy('outputs.output_at', 'DESC'); return Datatables::of($outputs) ->add_column('customer_name', '{{ App\Output::getCustomerName(App\Output::find($id)->customer_type,App\Output::find($id)->customer_id) }}') ->add_column('auto', '{{ App\Output::find($id)->vehicle_number }}') ->add_column('observations', '{{ App\Output::find($id)->observations }}') ->make(); } 

更新:

在我的情况下,我了解到我无法搜索添加了ad_column的列。 所以,我想从Model中实现函数,比如SELECT区域中的App \ Output_Detail :: getAmountDue。 我试过DB:RAW。 它不起作用,语法是正确的,但在网页上没有结果:

  $outputs = Output::join('my_companies', 'my_companies.id', '=', 'outputs.my_company_id') ->join('my_branches', 'my_branches.id', '=', 'outputs.my_branch_id') ->select(array('outputs.id', 'my_companies.name as my_company_name', 'my_branches.name as my_branch_name', 'outputs.output_at', 'outputs.invoice_id', 'outputs.customer_type'), DB::RAW(":amount as amount_due",array('amount' => App\Output_Detail::getAmountDue($id)))) ->where('outputs.invoice_status', $invoice_status) ->where('outputs.is_deleted', false) ->orderBy('outputs.output_at', 'DESC');