php - 集合上的 Laravel block 将第一个元素作为数组返回,第二个元素作为对象返回

标签 php laravel eloquent

我从模型中获取所有记录,但我需要从中获取 block ,我只需要电子邮件的值,以便我映射它

$forwadings = \App\Models\ForwardingEmail::where('company_id', $companyId)
->where('status', 1)
->get(['email']);
->map(function($forwarding) {
    return $forwarding['email'];
})
return $forwadings;

返回显示这个

[
  "email12@example.com",
  "email13@example.com",
  "email1@example.com",
  "email2@example.com",
  "email3@example.com",
  "email6@example.com",
  "email7@example.com",
  "email8@example.com",
  "email4@example.com",
  "email5@example.com",
  "email9@example.com",
  "email10@example.com"
]

这里的问题是当我返回$forwardings->chunk(10)时,它显示:

[
  [
    "email12@example.com",
    "email13@example.com",
    "email1@example.com",
    "email2@example.com",
    "email3@example.com",
    "email6@example.com",
    "email7@example.com",
    "email8@example.com",
    "email4@example.com",
    "email5@example.com"
  ],
  {
    "10": "email9@example.com",
    "11": "email10@example.com"
  }
]

为什么会发生这种情况?我该如何解决这个问题?我尝试在 block 结果上使用 toArray 但没有成功。我正在使用 laravel 5.3

最佳答案

Laravel 的 ->chunk() 方法将递增的 id 应用于所有分块项目。转换为 JSON 时,这是一个问题,因为 JavaScript 不允许数组以偏移键值开头(不以 0 开头),因此必须将它们定义为对象。

您可以自行处理以删除键值。像这样的东西应该有效。

$chunks = \App\Models\ForwardingEmail::where('company_id', $companyId)
    ->where('status', 1)
    ->pluck('email')
    ->chunk(10);

foreach ($chunks as $key => $chunk) {
    $chunks[$key] = array_values($chunk->toArray());
}

return $chunks;

关于php - 集合上的 Laravel block 将第一个元素作为数组返回,第二个元素作为对象返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59035117/

相关文章:

php - fopen(上传图片/): failed to open stream: No such file or directory in

php - 使用 php 显示来自 postgresql 的图像(bytea)

php - 语法错误 : Adding div class to php variable that will be outputted

laravel - Vagrant Laravel Homestead SSH 身份验证失败

php - 正确的 SQL 到 Laravel ORM

laravel - Laravel 的 eloquent 查询和相同的关联 SQL 查询(使用 toSql() 方法获得)之间的不同结果

mysql - Laravel 5.1 一对多和多对多模型的远程关系

php - Bootstrap 覆盖 wordpress 的默认行为

php - 我创建了 3 个表 users、meeting 和 request 如何获取请求 session 的用户?

php - 如何更改 Laravel 模型表名称