我正在使用带有分页的laravel 5.4,我有一个问题,即我的数据库中的一行显示两次,一次显示在4页中的两个上。当我删除该行但是两者都被删除但使用计数的行总数仅显示-1然后我看到一个先前隐藏/替换的行。
见下面的数据:
直接从数据库,设置查询以显示所有这些行+ 查询:
SELECT *
FROM `faulty_device`
WHERE `fault_id` = 14
AND `status` < 3
(粗体在laravel中被预防两次,草书根本没有显示)
| 4254 | 11383 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4208 | 10411 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4207 | 10313 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4206 | 10229 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03(未显示) | 4205 | 9527 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4204 | 8538 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4203 | 8457 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4202 | 8454 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4201 | 8402 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4200 | 6497 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4199 | 6454 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4198 | 6384 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4209 | 24666 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4241 | 451 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4242 | 1526 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4253 | 9879 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4252 | 9395 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4251 | 9277 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4250 | 6074 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4249 | 6000 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4248 | 5770 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4247 | 4962 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4246 | 4740 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4245 | 4734 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4244 | 4704 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4243 | 2824 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-05 07:07:43 | 4197 | 3910 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4196 | 3470 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03(两次赠送) | 4195 | 3357 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4155 | 2380 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4121 | 7766 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4120 | 7561 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4119 | 7318 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4118 | 7276 | 14 | 8 | XXXXXXXXXX | 2 | NULL | 2017-05-02 09:43:29 | 4117 | 6782 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4116 | 6571 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4115 | 5713 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4112 | 4603 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4110 | 3633 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4106 | 2805 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-02 09:43:29 | 4158 | 4515 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4159 | 5627 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4160 | 5628 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4194 | 2858 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4193 | 1536 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4192 | 849 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-04 07:16:03 | 4168 | 24642 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4167 | 10559 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4166 | 10439 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4165 | 10142 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4164 | 10114 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4163 | 8777 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4162 | 8513 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 4161 | 7450 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-05-03 06:55:48 | 2933 | 6841 | 14 | NULL | XXXXXXXXXX | 1 | NULL | 2017-04-08 10:55:36
基本上,呈现两行会删除Not Showing行。当我手动将该行的状态更改为3或更高(不包括在查询中将不显示)显示两次的行时,先前隐藏的行再次显示。就像这个副本是一个charmelion只是随机地插入一些人..
Laravel分页呈现数据+查询: (我知道这可以看起来更漂亮,但它应该做同样的事情它实际上是因为如果我在这里使用一个计数它将显示55行,就像我在上面计数一样)
$faultyDevices = FaultyDevice::
where('status', '!=', '3')
->where('status', '!=', '4')
->where('status', '!=', '5')
->where('status', '!=', '6')
->where('status', '!=', '7')
->orderBy('created_at', 'asc')
->paginate(18, ['*'], 'faults_page');
下面是一个最多为60的分页,以便所有行显示在一个页面上而不是分割为4.这里它正确显示所有行,就像在数据库中执行原始SQL一样:
答案 0 :(得分:2)
这是因为有许多记录具有相同的created_at
值。要解决此问题,请按ID添加第二个订单,以删除分页中的重复节目:
$faultyDevices = FaultyDevice::
where('status', '!=', '3')
->where('status', '!=', '4')
->where('status', '!=', '5')
->where('status', '!=', '6')
->where('status', '!=', '7')
->orderBy('created_at', 'asc')
->orderBy('id', 'asc')
->paginate(18, ['*'], 'faults_page');
答案 1 :(得分:0)
为避免显示重复项,请在查询中添加distinct()
子句:
$faultyDevices = FaultyDevice
::distinct()
->where('status', '<>', 3)
->where('status', '<>', 4)
->where('status', '<>', 5)
->where('status', '<>', 6)
->where('status', '<>', 7)
->orderBy('created_at', 'asc')
->paginate(18, ['*'], 'faults_page');
答案 2 :(得分:0)
您确定在点击更改页面时表格没有更新吗?基本上,Laravel只计算完整搜索的行数,并根据该数字和您要显示的页面设置offset
和limit
。这部分工作不会有错误。
但是,如果在打印分页后插入了一些新行,那么当您导航到下一页时,将查看上一页中的行。这是正常的,除非根据id
而不是行count()