php - Laravel:在数千行上使用“pluck”会导致 500 错误
问题描述
无法弄清楚为什么会这样。不幸的是,Laravel 吐出的只是 Chromes 标准 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 的工作,但这会引起一些头痛。
关于如何让它表现更好的任何想法?
解决方案
尝试:
return DataTable::eloquent($contracts)
->with(['all_ids' => $contracts->get('id')]);
get()
接受列名列表,该列表将包含在select
查询的一部分中。如果这还不够有效,那么检查是否DataTable
有一些 API 来分块/分页来获取所有这些 ID。
推荐阅读
- linux - bash - 基于进程条件的返回值
- python - 为 Django 中的多对多字段自定义模型序列化器
- apache-httpclient-4.x - Creating a Custom Apache HTTP Client Redirect policy
- vim - 如何从 fzf.vim 搜索中排除结果
- r - 仅向数据框 R 中的特定行添加前缀
- sql - 节点服务器不等待oracle db响应并重新执行请求方法
- kubernetes - Kubernetes 工作永无止境
- android - Spinner 显示列表中第一项的名称
- mysql - 无法添加或更新子行:外键约束失败 MYSQL:EF Core
- javascript - 如何使用`js_of_ocaml`从`bytes`生成`ArrayBuffer`