2014-04-27 21 views
4

我有以下簡單的控制器:Bllim數據表拋出未定義getQuery()異常

class OrdersController extends \BaseController { 

    public function index() 
    { 
     $orders = Order::all(); 

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

試圖使用bllim數據表包輸出到我的表。當我能數據表上面,我得到這個錯誤:

Call to undefined method Illuminate\Database\Eloquent\Collection::getQuery() 

錯誤位於\Bllim\Datatables\Datatables.php上線:

$this->columns = $this->query_type == 'eloquent' ? $this->query->getQuery()->columns : $this->query->columns; 

這個方法應該被定義,除非是我弄錯了。那麼這裏錯過了什麼?

回答

8

Usage

It is very simple to use this bundle. Just create your own fluent query object or eloquent object without getting results (that means don't use get(), all() or similar methods) and give it to Datatables. You are free to use all Eloquent ORM and Fluent Query Builder features.

通過調用all()方法要返回一個Illuminate\Database\Eloquent\Collection對象,在這種情況下,不包含getQuery()方法,你需要傳遞一個Illuminate\Database\Eloquent\BuilderIlluminate\Database\Query\Builder代替。

試試這個:

return Datatables::of(Order::select(array('id', 'othercolumns')))->make(); 

或者這樣:

$query = DB::table('orders')->select(array('id','othercolumns')); 
return Datatables::of($query)->make(); 

選擇要在陣列中的數據表中顯示的列。

+1

完全錯過了。 **臉掌**感謝! – eComEvo

+1

不客氣:-) –

+1

在完整的一面註釋...酷編碼權力的動物。 :) – eComEvo