我正在使用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行重复记录。
答案 0 :(得分:0)
我尝试使用提供的数据重现该问题,但无法进行(资产'C0-06-0006'仅对我显示一次),因此代码可能很好。
因此,我的猜测是数据有问题。请仔细检查所有内容是否具有正确的ID,或者表中是否包含重复的记录。
很遗憾,没有足够的信息来确定。如果这样做没有帮助,请您提供CREATE TABLE脚本和语句来填充表格吗?
这是Laravel为第二页为我生成的SQL。这可能有助于查找问题。
select fixedassets.*, userassets.desc, userassets.cost, userassets.centerid, staff.name
from fixedassets
left join userassets
on fixedassets.assetid = userassets.assetid
and userassets.active = 1
left join staff on userassets.staff_id = staff.id
where userassets.centerid in (2050001, 2050002, 2050003, 2050004, 2050005, 2050006, 2050007, 2050008)
limit 6 offset 6
答案 1 :(得分:0)
这几天我尝试解决问题之后。终于找到了声音的解决方案。 只需在sql上添加-> orderBy('fixedassets.assetid')。一切正常。