向 eloquent 中的关系结果添加附加列

Adding additional column to the result of relationship in eloquent

我有两个模型。它们都是枢轴,因为它们连接其他表。但也和他们自己有关系。

class CompanyUser extends Pivot
{
    protected $table = 'company_user';

    public function companyUserProducts() {
        return $this->hasMany('App\CompanyUserProduct','company_user_id');
    }

}

class CompanyUserProduct extends Pivot
{
    protected $table = 'company_user_product';

    public function companyUser() {
        return $this->belongsTo('App\CompanyUser','company_user_id');
    }
    
}

我想获取 CompanyUserProduct 的所有实体,但要使用 CompanyUser 中的附加列 user_id,因此我可以对集合执行 pluck('user_id') 并立即获取所有 ID。是否可以在 Eloquent 中完成,还是我必须使用查询生成器?

$companyUsers = CompanyUserProduct::with('companyUser')->get();

你可以做到

$companyUsers = CompanyUserProduct::with('companyUser:id,user_id')->get();

检索 CompanyUserProduct 以及 compantUseriduser_id

注意:无论您 primary key 还是 companyUser - 确保您也 select 它。 (在本例中假定为 id

检索集合后,每个 CompanyUserProduct

user_id 将在 companyUser

因此,您可以使用点符号来提取它。

例如:

$userIds = $companyUsers->pluck('companyUser.user_id');