我这里有个问题,我想把两个数组组合成一个,我试过使用php中的array_merge,和laravel中的merge (),但都不起作用//$plucked是EAV数据库
$vendor = Vendor::find($id)->toArray();
$vendor_detail = Vendor_detail::where('vendor_id',$id)->get();
$plucked = $vendor_detail->pluck('vendor_name','vendor_value');
$merged = array_merge($plucked, $vendor);
// $merged = $vendor->merge($plucked)->all();
dd($merged);我认为因为数组不同,所以数组$plucked
#items: array:10 [▼
"user_email" => "cobaupdatelagi@gmail.com"
]这是我在$vendor中的数组
array:15 [▼
"vendor_id" => 39
"province" => "ACEH"
]我想要的输出
$somearray =[
"vendor_id" => 39
"province" => "ACEH"
"user_email" => "cobaupdatelagi@gmail.com"
]发布于 2019-12-12 18:02:03
您的$vendor是一个关联数组,而$plucked是一个数组数组。即使它只有一项,它的索引也将为零,因此您需要遍历$plucked并对每一项进行合并。
$vendor = Vendor::find($id)->toArray();
$vendor_detail = Vendor_detail::where('vendor_id',$id)->get();
$plucked = $vendor_detail->pluck('vendor_name','vendor_value');
$merged = [];
foreach($plucked as $p){
$merged[] = array_merge($p, $vendor);
}
dd($merged);发布于 2019-12-12 18:08:59
$vendor = Vendor::find($id);
$vendor_detail = Vendor_detail::select('vendor_id','province')->where('vendor_id',$id)->get()->toArray();
$data= array_merge($vendor,$vendor_detail);发布于 2019-12-12 18:15:47
我认为你应该使用数据库连接来获得更快的结果。
$vendor = Vendor::join('vendor_details', 'vendors.id', '=', 'vendor_details.vendor_id')
->select('vendors.*', 'vendor_name','vendor_value')
->where('id', $id)
->first();
if ($vendor) {
$vendor = $vendor->toArray();
}https://stackoverflow.com/questions/59301618
复制相似问题