You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Laravel 5.6数据分页显示计数异常问题求助

修正Laravel 5.6分页计数显示异常的问题

嘿,我来帮你搞定这个分页计数的问题~你的代码里有两个关键问题导致显示异常:一是起始条目数的计算逻辑不对,导致第一页从0开始;二是你虽然定义了$currentShowing变量,但没用到它来修正最后一页的结束数,而且起始数的逻辑不符合常规的“从1开始计数”的习惯。

下面是修正后的代码,完全能实现你想要的效果:

$page = $request->has('page') ? $request->get('page') : 1;
$total = UserAdmin::count();
$perPage = 10;

// 计算当前页的起始条目数(从1开始,避免第一页显示0)
$showingStarted = ($page - 1) * $perPage + 1;
// 计算当前页的结束条目数,自动处理最后一页的边界情况
$showingEnded = min($page * $perPage, $total);

// 拼接符合要求的提示文本
$tableInfo = "Showing $showingStarted to $showingEnded of $total entries";

逻辑拆解:

  • 起始数修正($page - 1) * $perPage + 1 这个公式完美解决了第一页从1开始的问题,比如第一页(1-1)*10+1=1,第二页(2-1)*10+1=11,完全符合常规的条目计数逻辑。
  • 结束数修正min($page * $perPage, $total) 会自动取“当前页最多能显示的条目数”和“总条目数”里的较小值,比如总共有35条时,最后一页(第4页)min(4*10,35)=35,不会再出现显示40的错误。
  • 最后加上了你需要的entries文本,和你期望的格式完全匹配。

测试一下效果:

  • 第一页(page=1):Showing 1 to 10 of 35 entries
  • 最后一页(page=4):Showing 31 to 35 of 35 entries

这里提一句:你之前说期望最后一页显示Showing 30 to 35 of 35 entries,这其实不符合常规的分页逻辑(会和第三页的最后一条重复),如果确实需要这种显示方式,可以把起始数的公式改成($page - 1) * $perPage,然后第一页的时候单独处理成1,不过这样会导致条目范围重复,不太推荐哦~

内容的提问来源于stack exchange,提问作者Mahbub

火山引擎 最新活动