php - Laravel Pagination 使数据记录重复显示
问题描述
我正在使用 Laravel 分页以每页 6 条记录的格式显示记录集。显示的最后一条记录数据值的第一页与第一条记录数据的第二页相同。剩余页面正常显示记录数据。
此示例报告通过 laravel 分页显示出来。该记录在第 6 行和第 7 行重复显示。
No. Asset Id Desc Cost Center Id Requestor
1 CO-01-0001 Lenovo M720 3,500.00 2050001 David
2 CO-02-0002 Lenovo M720 3,500.00 2050001 David
3 CO-03-0003 Lenovo M720 3,500.00 2050001 Jack
4 CO-04-0004 Lenovo M720 3,500.00 2050002 Jack
5 C0-05-0005 Lenovo M720 3,600.00 2050002 Peter
6 C0-06-0006 Lenovo M720 3,600.00 2050003 Peter
<第1页>
No. Asset Id Desc Cost Center Id Requestor
7 C0-06-0006 Lenovo M720 3,600.00 2050003 Peter
8 CO-07-0007 Lenovo M720 3,500.00 2050004 David
9 CO-08-0008 Lenovo M720 3,500.00 2050005 Jack
10 CO-09-0009 Lenovo M720 3,500.00 2050006 Jack
11 C0-10-0010 Lenovo M720 3,600.00 2050007 Peter
12 C0-11-0011 Lenovo M720 3,600.00 2050008 Peter
<第2页>
我曾尝试在不分页的情况下显示报告。重复的问题没有出现。此示例报告在没有 laravel 分页的情况下显示出来。记录正常显示。
No. Asset Id Desc Cost Center Id Requestor
1 CO-01-0001 Lenovo M720 3,500.00 2050001 David
2 CO-02-0002 Lenovo M720 3,500.00 2050001 David
3 CO-03-0003 Lenovo M720 3,500.00 2050001 Jack
4 CO-04-0004 Lenovo M720 3,500.00 2050002 Jack
5 C0-05-0005 Lenovo M720 3,600.00 2050002 Peter
6 C0-06-0006 Lenovo M720 3,600.00 2050003 Peter
7 CO-07-0007 Lenovo M720 3,500.00 2050004 David
8 CO-08-0008 Lenovo M720 3,500.00 2050005 Jack
19 CO-09-0009 Lenovo M720 3,500.00 2050006 Jack
10 C0-10-0010 Lenovo M720 3,600.00 2050007 Peter
11 C0-11-0011 Lenovo M720 3,600.00 2050008 Peter
下面是我的示例控制器代码:
$assets = DB::table('Asset_Tracking.dbo.fixedassets')
->leftjoin('Asset_Tracking.dbo.userassets', function ($join) {
$join->on('fixedassets.assetid', '=', 'userassets.assetid')
->where('userassets.active', 1); })
->leftjoin('company.dbo.staff', 'userassets.staff_id', '=', 'staff.id')
->select('fixedassets.*', 'userassets.desc', 'userassets.cost', 'userassets.centerid'
, 'staff.name')
->whereIn('userassets.centerid', $costcentarr)->paginate(6);
$rank = $assets->firstItem();
return view('asset.show', ['rank' => $rank, 'assets' => $assets]);
以下是我的示例刀片代码:
@foreach($assets as $asset)
<table class="table table-sm table-hover table-bordered"><tr>
<th><small>{{ $rank++ }}</small></th>
<th scope="row"><small>{{ $asset->assetid }}</small></th>
<td><small>{{ $asset->DESC }}</small></td>
<td><small>{{ $asset->COST }}</small></td>
<td><small>{{ $asset->centerid }}</small></td
<td><small>{{ $asset->name }}</small></td>
</tr>
@endforeach
</table>
{{ $assets->links() }}
我希望输出 11 条记录,但输出是 12 条记录,其中 1 条记录在第 6 行和第 7 行重复记录。感谢您的回复。
解决方案
在我这几天尝试解决问题之后。终于找到了合理的解决方案。只需在 sql 上添加 ->orderBy('fixedassets.assetid ') 即可。一切正常。
推荐阅读
- jsp - 为什么 JSP 在刷新时会在客户端重复记录?
- swift - SwiftUI UIRepresentable tableView 单元格截断
- ios - 根据另一个 NSbutton 以编程方式设置 NSButton 属性
- node.js - 异步/等待函数返回未定义
- oracle-apex - 如何抑制由更改其级联父列的值引起的交互式网格弹出 lov 列的更改事件?
- azure-devops - 无需代码签出即可创建 Azure Devops 管道
- qt - 如何在qt qml中更改地图上代表组件的颜色
- node.js - 如何使 MongoDB 更新执行得更快?
- reactjs - 在本机反应中动态呈现问题
- java - 可变 Spring Bean 中的线程安全