2017-09-25 31 views
0

我在我的數據庫中有'post'表。在帖子表中,我有'LanguageID'列。 當我存儲/保存數據時,它將創建兩條記錄,第一條記錄的語言id = 1,第二條記錄的語言id = 2。 現在,我想單獨顯示所有「發佈」數據。如何使用兩個或更多的數據表使用yajra(Laravel)

控制器

public function index(Request $request) 
{ 
    $languages = Language::where('IsActive', 1)->get(); 
    if($request->ajax()) { 
     foreach ($languages as $lang) { 
      $post = Post::where('LanguageID', $lang->id)->get(); 
     } 
     return Datatables::of($post) 
     ->addColumn('action', function($post){ 
      return '<a id="edit" class="btn btn-info" 
           href="post/' . $post->id . '/edit"> 
            <i class="glyphicon glyphicon-edit icon-white"></i> 
            Edit 
           </a> 
           <button type="button" class="btn btn-danger" 
           onclick="checkDelete('.$post->id.', this);" 
           data-token="{{ csrf_token() }}"> 
            <i class="glyphicon glyphicon-trash icon-white"></i> 
            Delete 
           </button>'; 
          }) 
     ->make(true); 
    } 
    return view('pages.back-end.lists.post')->with('languages', $languages); 
} 

這是我的視圖

這是我的yajra

$(function(){ 
$("#data-post").DataTable({ 
    processing: true, 
    serverSide: true, 
    ajax:{ 
      url: "{{ url("post") }}", 
      data:{ _token: "{{csrf_token()}}", languageid: languageid} 

     }, 
    columns: [ 
     { data: 'PostDate', name: 'PostDate'}, 
     { data: 'PostTitle', name: 'PostTitle' }, 
     { data: 'PostSlug', name: 'PostTitle' }, 
     { data: 'action', name: 'action'} 
    ] 
}); 

});通過將語言ID https://datatables.yajrabox.com/collection/custom-filter

使用可以做按鈕,印度尼西亞和英語手冊AJAX調用,然後摧毀 -

+0

https://datatables.yajrabox.com/collection/custom-filter – Bugfixer

+0

你能不能給我一個你可以使用基於語言ID過濾器例?我看到自定義過濾器,但我沒有得到指針@Bugfixer –

回答

0

你必須在你做這樣dataTable.php

public function language($id){ 
    $this->language = $id; 
    return $this; 
} 

public function query(Post $model) 
{ 
    $query = Post::where('LanguageID',$this->language)->select('posts.*'); 

    return $this->applyScopes($query); 
} 

然後解析語言ID,調用DataTable手動

$('.tabPost').each(function(){ 
var lang_id = $(this).attr('id'); 
var oTable = $("#data-post" + lang_id).DataTable({ 
    processing: true, 
    serverSide: true, 
    dom: 'Bfrtip', 
    order: [[0, 'desc']], 
    buttons: ['create', 
      'export', 
      'print', 
      'reset', 
      'reload', 
      'colvis', 
      ], 
    ajax:{ 
    url: "{{ url("post") }}", 
    data: function(d) { 
     d.LanguageID = lang_id 
    } 
    }, 
    columns: [ 
     { data: 'id', name: 'id'}, 
     { data: 'PostDate', name: 'PostDate'}, 
     { data: 'PostTitle', name: 'PostTitle' }, 
     { data: 'PostSlug', name: 'PostTitle' }, 
     { data: 'action', name: 'action'} 
    ] 
}); 

$('#'+lang_id).on('click', function(e){ 
    oTable.draw(); 
    e.preventDefault(); 
}); 

});

,不要忘記設置你的控制器這樣

public function index(PostDataTable $dataTable, Request $request) 
{ 
    $languages = Language::where('IsActive', 1)->get(); 
    return $dataTable->language($request->input('LanguageID'))->render('pages.back-end.lists.post', compact('languages')); 
} 
0

您可以使用基於語言ID reffer這yajra數據表濾波器並重新啓動數據表 -

function customFilters(languageid) 
{ 
    $('#datatableid').dataTable().fnDestroy(); 
    $('#datatableid').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax":{ 
       "url": url_link, 
       "dataType": "json", 
       "type": "POST", 
       "data":{ _token: "{{csrf_token()}}", languageid: languageid} 

      }, 
    "columns": [ 
     { "data": "id" }, 
     { "data": "PostDate" }, 
     { "data": "PostTitle" }, 
     { "data": "PostSlug"}, 
     { "data": "LanguageID"}, 
     { "data": "actions" ,orderable: false, searchable: false} 
    ]  
}); 

}

希望這會幫助你。

+0

你知道如何實現這一點,如果我使用服務Datatable yajra? –

相關問題