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




