2015-04-30 50 views
0

我正在使用http://datatables.net/andhttps://github.com/yajra/laravel-datatables-oracle。當我嘗試搜索時,我得到一個帶有「Ajax錯誤」的彈出窗口,我似乎已經縮小了它的範圍,因爲在查詢中存在連接時就成爲問題。使用laravel-datatables-oracle獲取Ajax錯誤的數據表

這裏用於Ajax請求方法(爲簡單起見刪除字段):

$leads = Lead::leftJoin('lead_status', 'leads.status', '=', 'lead_status.id') 
->select('leads.id', 'leads.email', 'lead_status.status'); 

正如我所說,只有當我嘗試搜索我會得到錯誤這工作得很好,我不明白它在對結果進行排序或分頁時。

當查詢中沒有加入時,我不會收到任何問題。

,而不是現在一直在這一段時間知道該怎麼做..

+0

當然這無關與數據表 - 問題是關係到你的數據庫查詢。你能調試結果並比較它們嗎? – markpsmith

+0

查詢有什麼問題? – Alex

回答

3

當使用連接語句,你有JS領域的完全合格的名稱來指定。你應該使用table.column模式。請參見下面的示例代碼:

$('#posts-table').DataTable({ 
     processing: true, 
     serverSide: true, 
     ajax: 'joins-data', 
     columns: [ 
      {data: 'id', name: 'posts.id'}, 
      {data: 'title', name: 'posts.title'}, 
      {data: 'name', name: 'users.name'}, 
      {data: 'created_at', name: 'posts.created_at'}, 
      {data: 'updated_at', name: 'posts.updated_at'} 
     ] 
    }); 

而且您的控制器上

public function getJoinsData() 
    { 
     $posts = Post::join('users', 'posts.user_id', '=', 'users.id') 
      ->select(['posts.id', 'posts.title', 'users.name', 'users.email', 'posts.created_at', 'posts.updated_at']); 

     return Datatables::of($posts) 
      ->editColumn('title', '{!! str_limit($title, 60) !!}') 
      ->editColumn('name', function ($model) { 
       return \HTML::mailto($model->email, $model->name); 
      }) 
      ->make(true); 
    } 
+0

親愛的先生@yajra,當我把這行寫在我的代碼中時,它給了我錯誤。 - > editColumn('name',function($ model){ return \ HTML :: mailto($ model-> email,$ model-> name); })。請幫幫我。 – Raham