我想将两个数据搜索结果合并到一个数组中,我使用array_merge
,但出现array_merge()
错误:
Argument # 1 is not an array
如何将$vendor
的 Eloquent 结果转为数组并与$plucked
组合?
$vendor = Vendor::find($id);
$vendor_detail = VendorDetail::where('vendor_id',$id)->get();
$plucked = $vendor_detail->pluck('vendor_profile_value','vendor_profile_name');
$coba = array_merge($vendor,$plucked);
$plucked
已经是一个数组
我认为这里的问题是 $vendor
还不是数组
最佳答案
你可以这样做:
$vendor = Vendor::find($id);
$vendorDetails = VendorDetail::query()
->select('vendor_profile_value', 'vendor_profile_name')
->where('vendor_id', $id)
->get()
->toArray();
$coba = array_merge($vendor, $vendorDetails);
get()
方法执行查询,返回 Collection例如,您可以在其中调用 toArray()
方法。
旁注
据我所知,您可以利用 relationships和 eager loading .
如果您有 one-to-many relationship在您的 Vendor
模型中定义如下:
public function details()
{
return $this->hasMany(VendorDetails::class);
}
然后,您可以 eager load关系是这样的:
$vendor = Vendor::with('details')->find($id);
// ^^^^^^^^^^^^^^
您甚至可以只加载所需的字段:
$vendor = Vendor::with('details:vendor_profile_value,vendor_profile_name')
->find($id);
然后,您的对象将具有一个名为“详细信息”的新属性,其中包含相关对象(或有限选定字段的集合)。
关于php - 如何将 Eloquent 结果放入数组 Laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242455/