【发布时间】:2018-10-17 15:17:44
【问题描述】:
无法弄清楚为什么会发生这种情况。不幸的是,Laravel 吐出的只是 Chrome 标准 500 错误页面不起作用。
我有一个用户可以搜索合同的表格。我有成千上万行。该列表加载(不带过滤器)大约 22,000 多行,按粗略分页。我正在使用一个名为 DataTables 的插件来制作表格。当我将响应与表格一起发送回前端时,我还想从合约中提取所有 id 并将其与 DataTable 数据一起发送,您可以使用 DataTables ->with() 选项来完成。
例如:
return DataTable::eloquent($contracts)
->with(['all_ids' => $contracts->get()->pluck('id')])
问题是,500 错误一直在新列表中发生。但是,如果我将列表过滤到大约 500 行左右,那么所有 500 个采摘 id 的响应都没有问题。
似乎 500 错误源于 22,000 被拔除。不幸的是,DataTables 不会发回列表中的所有 id,而只是发回分页(当前视图)的 id。这是我在整个结果集中获取所有可能的 id 的工作,但这会引起一些麻烦。
关于如何让它表现更好的任何想法?
【问题讨论】:
-
不要使用 get()。从行中获取所有数据,然后从庞大的集合中提取 id。取而代之的是在查询中提取 id。下一次,在发布之前找出 500 错误的实际原因,但我可以假设您通过获取 22000 完整行来遇到内存错误。
-
链接到
DataTable?也许解决方案在于该类中一些更有效的方法。 -
检查您的
error_log以查看您是否在此处收到特定错误。另外,将$contracts->get()->pluck('id')更改为$contracts->pluck('id')