Laravel Multiple Pagination在一页中

 安淡言 发布于 2023-01-11 12:06

我的分页遇到了一些麻烦.我有两个表来自数据库中的数据,我用laravel Paginator对它进行了分页.

现在我的问题是当你去,例如,第2页它添加?page = 2但这使第一个表也转到第2页.

反正有没有得到这样的东西?

page_table1={number}&page_table2={number}

所以你不要在其他表上应用页面更改.

6 个回答
  • 不幸的是我现在无法测试这段代码,但浏览文档和代码(in Illuminate/Pagination/Environment)我想你可能会这样:

    # use default 'page' for this
    $collection1 = Model::paginate(20);
    
    # use custom 'other_page' for this
    $collection2 = Model2::paginate(20);
    $collection2->setPageName('other_page');
    

    setPageName()方法没有记录在文档中,但它是一个公共方法以及文档中指出的方法,所以它应该工作正常.参考,这是声明(l.171-180 in vendor/laravel/framework/src/Illuminate/Pagination/Environment.php):

    /**
     * Set the input page parameter name used by the paginator.
     *
     * @param  string  $pageName
     * @return void
     */
    public function setPageName($pageName)
    {
        $this->pageName = $pageName;
    }
    

    现在考虑到你将在url中附加另一个查询字符串,所以你需要告诉分页考虑它.使用appends()方法:

    $collection1->appends(array_except(Request::query(), 'page'))->links();
    
    $collection2->appends(array_except(Request::query(), 'other_page'))->links();
    

    也就是说,告诉每个Presenter使用所有查询字符串构建url(由Request::query() 没有 paginator使用的当前索引产生的数组,或者你最终得到一个double值).array_except()是一个内置于数组助手中的Laravel,它返回已传递索引(第二个参数)的给定数组(第一个参数).

    我会尽快测试这段代码,但它应该可行.无论如何,让我知道!

    2023-01-11 12:07 回答
  • Laravel 5.7

    Model->paginate(10, ['*'], 'paramName');
    
    10 = Max items per page
    
    ['*'] = colums
    
    paramName = pagination param name
    

    照亮\数据库\口才\生成器

    2023-01-11 12:08 回答
  • 这是我在Laravel 4上找到的一个简单的解决方案.

    调节器

    在创建分页器之前更改页面名称:

    Paginator::setPageName('page_a');
    $collection_A = ModelA::paginate(10);
    
    Paginator::setPageName('page_b');
    $collection_B = ModelB::paginate(10);
    

    视图

    执行相同操作:在打印链接之前更改页面名称

    Paginator::setPageName('page_a');
    $collection_A->links();
    
    Paginator::setPageName('page_b');
    $collection_B->links();
    

    如果您不希望在导航到其他页面时丢失任何页面状态,请将链接附加到所有集合的当前页面:

    Paginator::setPageName('page_a');
    $collection_A->appends('page_b', Input::get('page_b',1))->links();
    
    Paginator::setPageName('page_b');
    $collection_B->appends('page_a', Input::get('page_a',1))->links();
    

    2023-01-11 12:08 回答
  • 在laravel 5.3(maibe在其他laravel 5版本中工作),我使用如下:

        $produk = Produk::paginate(5, ['*'], 'produk');
        $region = Region::paginate(5, ['*'], 'region');
    

    并且在叶片模板中附加其他的电流来保持位置:

        {{$produk->appends(['region' => $region->currentPage()])->links()}}    
        {{$region->appends(['produk' => $produk->currentPage()])->links()}}    
    

    2023-01-11 12:08 回答
  • $publishedArticles = Article::paginate(10, ['*'], 'published');
    $unpublishedArticles = Article::paginate(10, ['*'], 'unpublished');
    

    第三个参数使用如下:

    laravel /公/文章?发表= 3

    laravel /公/文章?未公布= 1

    2023-01-11 12:08 回答
  • 在Laravel 5.2中,使用时声明页面名称paginate().

    这是一个适用于页面上多个分页器的示例.

    请务必$pageName为其他型号指定其他型号.

    看方法 \Illuminate\Database\Eloquent\Builder::paginate()

    /**
     * Get things by ownerId
     *
     * @param integer $ownerId The owner ID.
     *
     * @return \Illuminate\Contracts\Pagination\LengthAwarePaginator Returns a pagination instance.
     */
    public function getThings($ownerId)
    {
        $builder = \App\Models\Things::where('ownerId', '=', (integer) abs($ownerId));
    
        // dd([
        //     '__METHOD__' => __METHOD__,
        //     '__FILE__' => __FILE__,
        //     '__LINE__' => __LINE__,
        //     '$ownerId' => $ownerId,
        //     'sql' => $builder->toSql(),
        //     '$builder' => $builder,
        //     'paginate' => $builder->paginate($perPage = null, $columns = ['*'], $pageName = 'p', $page = null),
        // ]);
    
        return $builder->paginate($perPage = null, $columns = ['*'], $pageName = 'p', $page = null);
    }
    

    注意: $pageName = 'p'

    2023-01-11 12:08 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有