当前位置: 首页 > 知识库问答 >
问题:

Laravel一页多页分页

锺离卓
2023-03-14

我的分页有点问题。我有两个包含数据库数据的表,我用laravel Paginator对其进行了分页。

现在我的问题是,当你进入,例如,第2页,它添加了什么?page=2,但这使得第一个表也转到第2页。

有没有办法得到这样的东西?

page_table1={number}

这样就不会在其他表上应用页面更改。


共有3个答案

申屠新觉
2023-03-14

不幸的是,我现在无法测试这段代码,但是浏览文档和代码(在illumb/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在供应商/laravel/框架/src/照明/分页/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();

也就是说,告诉每个演示者使用所有查询字符串(由Request::query()生成的数组,不使用分页器使用的当前索引,否则将得到一个双值)来构建urlarray_except()是一个内置的Laravel数组助手,它返回给定的数组(第一个参数),清除传递的索引(第二个参数)。

我会尽快测试这段代码,但应该可以。无论如何都要告诉我!

唐沈义
2023-03-14

这是我在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-03-14
$publishedArticles = Article::paginate(10, ['*'], 'published');
$unpublishedArticles = Article::paginate(10, ['*'], 'unpublished');

第三个参数的用法如下:

laravel/公共/文章?发表=3

laravel/公共/文章?未发表=1

 类似资料:
  • 问题内容: 我的分页有麻烦。我有两个包含来自数据库的数据的表,并使用laravel Paginator对它进行了分页。 现在我的问题是,当您转到第2页时,它添加了?page = 2,但这也使第一个表也转到了第2页。 反正有得到这样的东西吗? 因此您不会在其他表格上应用页面更改。 问题答案: 不幸的是,我现在无法测试此代码,但是浏览文档和代码(在中),我想您可能会这样: 该方法未在文档中进行记录,但

  • Laravel-8.6.0(Jetstream),Livewire-2.2.7 除了其他东西,我有两个简单的表,搜索输入是用LiveWire呈现的。两个Livewire组件的逻辑基本相同,主要区别是DB查询格式。在一个表(搜索、分页)中,所有的工作都很完美,但在第二个表中,分页有问题。 怎么了?当我点击分页链接(例如,从第一页gotoPage(2)),请求被发送,浏览器中的url更改为适当的查询字

  • 问题内容: 我正在使用shift31 / laravel-elasticsearch:〜1.0。我想在我的列表页面上实现分页。 搜索代码: 如何在上面的查询中使用分页? 更新: 我在查询中使用from和size,但是如何在视图页面中提供分页链接?以及如何通过单击页面进行更新? 问题答案: 在仓库中 我在控制器中设置了$ per_page和$ from 现在在视图{{!! $ admin_excep

  • 简介 在大多数的框架中,分页无不令人十分头疼。 Laravel 的分页器与查询构造器、Eloquent ORM 集成在一起,并提供方便易用的数据结果集分页。分页器生成的 HTML 与 Bootstrap CSS 框架 兼容。 基本用法 查询构造器分页 对数据进行分页有几种方式。 最简单的是在 查询语句构造器 或者 Eloquent 语句 使用 paginate 方法。 paginate 会根据用户

  • 加载页面视图时,将对函数AjaxProductList()启动一个ajax调用; 当我点击分页中的任何一个链接时,它会成功地处理数据,但不会更新活动链接。即,如果我点击第5页,它将获取正确的数据,但活动链接将仍然在第1页。 请告诉我,我是否做错了什么? 提前道谢。

  • 问题内容: 有没有办法在Laravel 4中获得漂亮的分页URL? 例如,默认情况下: 我想得到的是: 同样,分页应以这种方式呈现,并且添加到分页应以这种方式出现。 问题答案: 这是一个骇人的解决方法。我正在使用Laravel v4.1.23。假设页码是您网址的最后一位。还没有进行深入的测试,因此我对人们可以找到的任何bug感兴趣。我对更好的解决方案更感兴趣:-) 路线: 视图: 模型: 移民: