【问题标题】:Laravel Pagination make data record displayed in duplicateLaravel Pagination 使数据记录重复显示
【发布时间】:2019-07-08 08:41:02
【问题描述】:

我正在使用 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

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

我曾尝试在不分页的情况下显示报告。重复的问题没有出现。此示例报告在没有 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 行重复记录。感谢您的回复。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    我已尝试使用提供的数据重现问题,但无法重现(资产“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
    

    【讨论】:

    • 你好 JorisJ1。谢谢你的帮助。我可以知道如何找到 Laravel 为第二页生成的 SQL 吗?谢谢。
    • 我使用Laravel Debugbar。另一种方法是启用您的数据库查询记录器。
    【解决方案2】:

    在我这几天尝试解决问题之后。终于找到了合理的解决方案。 只需在 sql 上添加 ->orderBy('fixedassets.assetid ') 即可。一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2019-04-27
      • 1970-01-01
      • 2021-09-26
      • 2020-07-14
      相关资源
      最近更新 更多