Php Laravel 5分页问题
我遇到了重写L5分页的问题,以前的方法现在已经丢失了。特别是Php Laravel 5分页问题,php,laravel-5,Php,Laravel 5,我遇到了重写L5分页的问题,以前的方法现在已经丢失了。特别是lastPage()和total() 这是一个疏忽吗(在这种情况下,我很乐意提交问题/PR) 我应该能够通过收集和计算它自己吗?我相信旧的paginator允许使用\uuu call()执行类似的操作,但是illighte\Pagination\paginator.php似乎甚至没有保留对完整集合的引用。它会立即将$items切片,以匹配$perPage,这样我就无法自己计算总数或最后一页了 我应该改用LengthAwarePagina
lastPage()
和total()
\uuu call()
执行类似的操作,但是illighte\Pagination\paginator.php
似乎甚至没有保留对完整集合的引用。它会立即将$items
切片,以匹配$perPage
,这样我就无法自己计算总数或最后一页了LengthAwarePaginator
?如果是这样的话,illumb\Database\elount\Builder::paginate()
是否应该返回一个LengthAwarePaginator
,而不是Paginator
?我正在尝试对DB集合进行分页,并获取一个Paginator
的实例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支持分页总计
你可以这样用
public function newEloquentBuilder($query)
{
return new \App\ExtendedBuilder($query);
}
$total=$paginatedCollection->total()