Laravel 5分页问题


Laravel 5 pagination issues

我在重写L5分页时遇到了问题,以前的方法现在丢失了。具体为CCD_ 1和CCD_。

  1. 这是疏忽吗(在这种情况下,我很乐意提交问题/PR)?

  2. 我应该能够接通Collection并自己计算吗?我相信旧的分页器允许__call()出现这样的情况,但是Illuminate'Pagination'Paginator.php似乎甚至没有保留对整个Collection的引用。它立即对$items进行切片以匹配$perPage,使我无法单独计算total或lastPage。

  3. 我应该使用LengthAwarePaginator吗?如果是,Illuminate'Database'Eloquent'Builder::paginate()不应该返回LengthAwarePaginator而不是lastPage()0吗?我正在尝试对一个DB集合进行分页,并获取一个Paginator的实例。

我只是想确保我理解L5中分页背后的想法/方向,然后再假设存在错误并提交GH问题或修复程序。

Udate:现在Laravel 5已经发布,这不再是一个问题。当我在Builder上paginate()时,我得到了一个LengthAwarePaginator

我遇到了同样的问题。以下是我所做的扩展了雄辩建设者类。由于我已经扩展了模型,所以从那里加载了新的构建器。

你可以从这个这样的扩展模型中加载新的构建器

public function newEloquentBuilder($query)
{
   return new 'App'ExtendedBuilder($query);
}

下面我有扩展生成器…………..

<?php namespace App;
use Illuminate'Database'Eloquent'Builder;
use Illuminate'Pagination'Paginator;
use Illuminate'Pagination'LengthAwarePaginator;
class ExtendedBuilder extends Builder{
public function lengthawarepaginate($perPage = null, $columns = ['*'])
{
    $page = Paginator::resolveCurrentPage();
    $perPage = $perPage ?: $this->model->getPerPage();
    $this->skip(($page - 1) * $perPage)->take($perPage);
    $queryClone = clone ($this->getQuery());
    $total = $queryClone->skip(0)->take($perPage + 1)->count($columns);

    return new LengthAwarePaginator($this->get($columns)->all(),$total, $perPage, $page, [
        'path' => Paginator::resolveCurrentPath()
    ]);
}

}

这是我从获得原始代码的地方

不确定这是否是最好的方法,但效果很好。

好吧,现在Laravel支持分页总

你可以像这样使用

$total=$paginatedCollection->total()