我有以下简单的控制器:
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;
除非我弄错,否则应该定义此方法。那么这里缺少什么?
答案 0 :(得分:10)
使用此捆绑包非常简单。只需创建自己的流利 查询对象或雄辩对象而不会得到结果(这意味着 不要使用get(),all()或类似方法)并将其提供给Datatables。您可以自由使用所有Eloquent ORM和Fluent Query 构建器功能。
通过调用all()
方法,您将返回一个Illuminate\Database\Eloquent\Collection
对象,在这种情况下,该对象不包含getQuery()
方法,您需要传递Illuminate\Database\Eloquent\Builder
或{ {1}}而不是。
试试这个:
Illuminate\Database\Query\Builder
或者这个:
return Datatables::of(Order::select(array('id', 'othercolumns')))->make();
选择要在数组中的数据表中显示的列。