Laravel:在成千上万的行上使用'pluck'会导致500错误

时间:2018-10-17 15:17:44

标签: php laravel

无法弄清为什么会这样。不幸的是,所有Laravel吐出来的只是Chromes标准的500错误页面无法正常工作。

我有一个前端表,用户可以搜索合同。我有成千上万的行。该列表加载(不带过滤器)有大约22,000+行,分页为corse。我正在使用一个名为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,但这会引起一些麻烦。

关于如何使它表现更好的任何想法?

1 个答案:

答案 0 :(得分:0)

尝试:

return DataTable::eloquent($contracts)
    ->with(['all_ids' => $contracts->get('id')]);

get()接受列名列表,该列名将包含在查询的select部分中。 如果效率不够高,请检查DataTable是否具有一些API来分块/分页获取所有这些ID。