2017-12-31 145 views
0

현재 두 날짜 사이의 범위에서 작동하는 두 값 사이에서 데이터 테이블을 필터링하려고하지만 열 양 값의 최소와 최대 사이를 필터링하려고합니다. 나는 모든 데이터를 표시하는 첫 원하는이 지금 노력하고 있습니다 것입니다,하지만 난이 양laravel datatables 견인 금액 사이의 필터

보기 사이를 필터 테이블을 반환하는 아약스를 사용하려면 :

<div class="input-amountrange input-group" id="amountrange"> 
    <input type="text" class="input-sm form-control" name="start_amount" id="start_amount" /> 
    <span class="input-group-addon">to</span> 
    <input type="text" class="input-sm form-control" name="end_amount" id="end_amount"/> 
</div> 

데이터 테이블 아약스 :

var oTable = $('#users-table').DataTable({ 
    dom: 'flBrtip', 
    buttons: [ 
    'excelHtml5', 
    'csvHtml5', 
    'pdfHtml5' 
    ],    
    stateSave: true, 
    paging:  true, 
    pagingType: 'simple_numbers', 
    lengthMenu: [ [10,15, 30, 50, -1 ], [ 10,15, 30, 50, "All" ] ], 
    processing: true, 
    serverSide: true, 
    ajax: { 
    url: 'custom-filter-data', 
    data: function(d) { 
     d.start_date = $('input[name=start_date]').val(); 
     d.end_date = $('input[name=end_date]').val(); 
     d.start_amount = 
     $('input[name=start_amount]').val(); 
     d.end_amount = $('input[name=end_amount]').val(); 
    } 
    }, 
    columns : [ 

    { data: 'details', name: 'details' }, 
    { data: 'postingdate', render: function (data) { 
     var date = new Date(data); 
     var month = date.getMonth() + 1; 
     return (month.length > 1 ? month : "0" + month) + "/" + date.getDate() + "/" + date.getFullYear();} }, 

     { data: 'description', name: 'description' }, 
     { data: 'amount', name: 'amount' }, 
     { data: 'type', name: 'type' }, 

     { data: 'vendor_name', name: 'vendors.vendor_name', mRender: function (data, type, row) {     
     return '<label hidden>'+data+'</label> <input type="text" id="vendor_name" class="vendor_name" data-id="'+row.id+'" onClick="this.select();" value="'+data+'">'; 
     } 
     }, 

     { data: 'vendor_id', mRender: function (data, type, row) {     
     return '<label hidden>'+data+'</label> <input type="text" id="vendor_no" class="vendor_no"  onClick="this.select();" value="'+data+'">'; 
     } 
     }, 

     { data: 'category_name', name: 'excategories.category_name', mRender: function (data, type, row) {     
     return '<label hidden>'+data+'</label> <input type="text" id="category_name" 
     class="category_name" data-id="'+row.id+'" onClick="this.select();" 
     value="'+data+'">'; 
     } 
     }, 
    ], 
     pageLength: 10, 
    }); 
oTable.draw(); 

컨트롤러

당신은 사용자 정의 필터를 생성하고 적용해야
public function getCustomFilterData() 
{ 
    $arrStart = explode("/", Input::get('start_date')); 
    $arrEnd = explode("/", Input::get('end_date')); 
    $start = Carbon::create($arrStart[2], $arrStart[0], $arrStart[1], 0, 0, 0); 
    $end = Carbon::create($arrEnd[2], $arrEnd[0], $arrEnd[1], 23, 59, 59); 

    $vendorTableName= with(new Vendors())->getTable(); 
    $categoryTableName= with(new Excategories())->getTable(); 
    $orders=Checks::select(["checks.*","vendors.vendor_name","excategories.category_name"])->between($start, $end)->leftJoin($vendorTableName,$vendorTableName.".vendor_id","=","checks.vendor_id")->leftJoin($categoryTableName,$categoryTableName.".category_id","=","checks.category_id"); 

    return Datatables::of($orders)->make(TRUE); 
} 

답변