Laravel 4中的Bllim DataTables引发未定义的getQuery()异常


Bllim DataTables in Laravel 4 throws undefined getQuery() exception

我有以下简单的控制器:

class OrdersController extends 'BaseController {
    public function index()
    {
        $orders = Order::all();
        return Datatables::of($orders)->make();
    }
}

正在尝试使用bllim DataTables包来输出我的表。当我可以在上面的DataTables时,我会得到这个错误:

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;

除非我弄错了,否则应该定义这个方法。那么这里缺少什么呢?

使用

使用这个捆绑包非常简单。只需创建自己的流利查询对象或雄辩对象而没有得到结果(这意味着不要使用get()、all()或类似的方法)并将其提供给Datatables。您可以自由使用所有Eloquent ORM和Fluent Query生成器功能。

通过调用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();

选择要在阵列中的数据表中显示的列。