【问题标题】:Adding additional column to the result of relationship in eloquent在 eloquent 的关系结果中添加额外的列
【发布时间】:2021-03-29 06:43:44
【问题描述】:

我有两个模型。它们都是枢轴,因为它们加入了其他表。但他们也与自己有关系。

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');
    }
    
}

我想从 CompanyUser 中获取 CompanyUserProduct 的所有实体,但要使用附加列 user_id,因此我可以在集合上执行 pluck('user_id') 并一次获取所有 ID。是否可以在 Eloquent 中完成,还是必须使用 Query Builder?

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

【问题讨论】:

  • ...with('companyUser:id,user_id')->get() 不起作用吗?您应该可以先pluck('companyUser.user_id') I think. Or maybe you should flatten` 集合,然后才能pluck
  • 没有测试,但也许你可以这样做:CompanyUserProduct::with('companyUser')->addSelect('company_user.user_id')->get() ?
  • company_user_product 表的 company_user_id 引用 company_user 表上的 user_idid
  • 谢谢@MohamedMufeed。您的解决方案有所帮助。你能发布答案,我会接受吗?

标签: php laravel eloquent laravel-7


【解决方案1】:

你可以的

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

检索CompanyUserProduct 以及compantUseriduser_id

注意:无论您的 primary key 还是 companyUser - 确保您也选择了它。 (本例假定为id

检索集合后,user_id 将位于 companyUser 下,每个 CompanyUserProduct

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

例如:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-04
    • 2021-07-07
    • 2015-04-04
    • 2021-01-26
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2016-06-15
    相关资源
    最近更新 更多