我正在开始学习 Laravel 5.3 和 Dingo API 以构建基本的 REST API。我正在尝试返回报告查询结果的分页 JSON 表示。我可以使用 Eloquent 模型进行分页,但是在使用原始 Illuminate QueryBuilder 进行数据库访问时不能。这是我一直在尝试的:
public function getWentCommission(Request $request, $start, $end)
{
$filters = $request->input('filter');
$query = DB::table('commissions')
->selectRaw("fields")
->leftJoin('users', 'users.id', '=', 'commissions.customerid')
->leftJoin('customers', 'customers.id', '=', 'commissions.customerid')
->whereBetween('datestart', [$start, $end])
->orWhereBetween('dateend', [$start, $end])
->orWhereNull('dateend')
->where('void', '=', 0)
->orderBy('startdate');
// Filter by users?
if($filters && array_key_exists('users', $filters))
{
$rawids = array_map('intval', array_unique(array_filter(explode(',', $filters['users']), 'is_numeric' )));
$query = $query->whereIn('users.id', $rawids);
}
return $this->response->paginator(new IlluminatePaginatorAdapter($query->paginate(25)), new ObjectTransformer);
}
但是,这只会让我遇到以下错误,我还没有弄清楚如何解决。任何建议将不胜感激。我确定我在这里遗漏了一些明显的东西。
Type error: Argument 1 passed to League\Fractal\Pagination\IlluminatePaginatorAdapter::__construct() must implement interface Illuminate\Contracts\Pagination\LengthAwarePaginator, instance of Illuminate\Support\Collection given