php - 如何将 Eloquent 结果放入数组 Laravel

标签 php laravel laravel-5 eloquent

我想将两个数据搜索结果合并到一个数组中,我使用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()方法。


旁注

据我所知,您可以利用 relationshipseager 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/

相关文章:

php - codeigniter 重定向函数错误

php - 逃离 MySQL PHP

php - 拉维尔 5.5 : How to define global variable that can be used in all controllers ?

php - Laravel 5.2 中特定路由的速率限制功能

php - 更新 Laravel 中的关系

php 在数组范围内查找值

php - 通过 php 中的邮件跟踪收件人 IP 地址

php - 非静态方法 Illuminate\Http\Request::url() 不能静态调用

php - Laravel 7:MariaDB与Redis结合使用,但是Redis在大型对象上的运行速度较慢

laravel - 如何进行503返回?