Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5分页问题_Php_Laravel 5 - Fatal编程技术网

Php Laravel 5分页问题

Php Laravel 5分页问题,php,laravel-5,Php,Laravel 5,我遇到了重写L5分页的问题,以前的方法现在已经丢失了。特别是lastPage()和total() 这是一个疏忽吗(在这种情况下,我很乐意提交问题/PR) 我应该能够通过收集和计算它自己吗?我相信旧的paginator允许使用\uuu call()执行类似的操作,但是illighte\Pagination\paginator.php似乎甚至没有保留对完整集合的引用。它会立即将$items切片,以匹配$perPage,这样我就无法自己计算总数或最后一页了 我应该改用LengthAwarePagina

我遇到了重写L5分页的问题,以前的方法现在已经丢失了。特别是
lastPage()
total()

  • 这是一个疏忽吗(在这种情况下,我很乐意提交问题/PR)

  • 我应该能够通过收集和计算它自己吗?我相信旧的paginator允许使用
    \uuu call()
    执行类似的操作,但是
    illighte\Pagination\paginator.php
    似乎甚至没有保留对完整集合的引用。它会立即将
    $items
    切片,以匹配
    $perPage
    ,这样我就无法自己计算总数或最后一页了

  • 我应该改用
    LengthAwarePaginator
    ?如果是这样的话,
    illumb\Database\elount\Builder::paginate()
    是否应该返回一个
    LengthAwarePaginator
    ,而不是
    Paginator
    ?我正在尝试对DB集合进行分页,并获取一个
    Paginator
    的实例

  • 我只是想确保在我假设存在bug并提交GH问题或修复之前,我理解L5中分页背后的思想/方向


    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()