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

时间:2015-08-03 07:14:15

标签: javascript jquery twitter-bootstrap laravel-5

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

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

来自php文件的javascript代码:

var oTable;
$(document).ready(function() {

    oTable = $('#table').dataTable({
        "sDom" : "<'row'<'col-md-6'l><'col-md-6'f>r>t<'row'<'col-md-6'i><'col-md-6'p>>",
        "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 Controller的代码:

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

0 个答案:

没有答案