1

我正在开始学习 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
4

0 回答 0