Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 集合上的Laravel块将第一个元素作为数组返回,第二个作为对象返回_Php_Laravel_Eloquent - Fatal编程技术网

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

Php 集合上的Laravel块将第一个元素作为数组返回,第二个作为对象返回,php,laravel,eloquent,Php,Laravel,Eloquent,我从一个模型中获取所有记录,但我需要从中获取数据块,我只需要电子邮件的值,所以我映射了它 $forwadings = \App\Models\ForwardingEmail::where('company_id', $companyId) ->where('status', 1) ->get(['email']); ->map(function($forwarding) { return $forwarding['email']; }) return $forwadin

我从一个模型中获取所有记录,但我需要从中获取数据块,我只需要
电子邮件的值,所以我映射了它

$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"
  }
]
为什么会发生这种情况?我怎样才能解决这个问题?我尝试在区块结果上使用
toArray
,但没有成功。我正在使用laravel 5.3

使用
弹拨

$forwadings = \App\Models\ForwardingEmail::where('company_id', $companyId)
->where('status', 1)
->pluck('email')->toArray();
Laravel的
->chunk()
方法将递增的
id
应用于所有分块项目。转换为JSON时,这是一个问题,因为JavaScript不允许数组以偏移量键值开头(而不是以0开头),因此它们必须定义为对象

您可以自行处理以删除键值。这样的办法应该行得通

$chunks=\App\Models\ForwardingEmail::where('company\u id',$companyId)
->其中('状态',1)
->拔毛(‘电子邮件’)
->块(10);
foreach($key=>$chunk的块){
$chunks[$key]=数组_值($chunk->toArray());
}
返回$chunk;

我需要对数组进行分块处理,这是对贴图的一种替代,但是当我尝试分块时,会得到相同的结果,一个数组和一个对象。这对我来说也是新的东西。谢谢你用的是什么版本的laravel?因为,我想我会尝试复制这个,但对我来说,在5.5和6.x上,你的解决方案是有效的。如中所示,两个块都是集合,toArray返回一个由两个数组组成的数组…能够在5.5和6.x上使用
toJson
进行复制。我不久前遇到过类似的问题,看看那里的答案是否与您相关: