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
进行复制。我不久前遇到过类似的问题,看看那里的答案是否与您相关: