Laravel 4中的Bllim DataTables抛出未定义的getQuery()异常

eCo*_*Evo 6 php datatables laravel laravel-4

我有以下简单的控制器:

class OrdersController extends \BaseController {

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

        return Datatables::of($orders)->make();
    }
}
Run Code Online (Sandbox Code Playgroud)

尝试使用bllim DataTables包输出我的表.当我上面的DataTables时,我收到此错误:

Call to undefined method Illuminate\Database\Eloquent\Collection::getQuery()
Run Code Online (Sandbox Code Playgroud)

错误位于\Bllim\Datatables\Datatables.php该行:

$this->columns = $this->query_type == 'eloquent' ? $this->query->getQuery()->columns : $this->query->columns;
Run Code Online (Sandbox Code Playgroud)

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

The*_*pha 11

用法

使用此捆绑包非常简单.只需创建自己的流畅查询对象或雄辩对象而不获取结果(这意味着 不要使用get(),all()或类似方法)并将其提供给Datatables.您可以自由使用所有Eloquent ORM和Fluent Query Builder功能.

通过调用该all()方法返回一个Illuminate\Database\Eloquent\Collection对象,在这种情况下不包含该getQuery()方法,您需要传递一个Illuminate\Database\Eloquent\BuilderIlluminate\Database\Query\Builder相反.

试试这个:

return Datatables::of(Order::select(array('id', 'othercolumns')))->make();
Run Code Online (Sandbox Code Playgroud)

或这个:

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

选择要在数组中的数据表中显示的列.