【问题标题】:Get Collection With HasOne Relationship使用 HasOne 关系获取收藏
【发布时间】:2016-09-21 15:07:56
【问题描述】:

在我的 Laravel 5.2 用户模型中,我设置了他们与公司的关系。

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status');
}

CompanyUser 表有一个 company_id、user_id 和 status 字段

然后在我的控制器中执行以下操作:

$company   = Company::find($company_id);
$users     = CompanyUser::where('company_id', $company_id)->pluck('user_id')->toArray();
$user_data = User::with('companyStatus')->find($users);

但是当我转储 user_data 数组时,它包含与公司相关的所有用户,但仅显示 null 的状态关系

{
   "id":2,
   "name":"Moderator",
   "email":"mod@company.com",
   "created_at":"2016-09-08 15:26:20",
   "updated_at":"2016-09-08 15:26:25",
   "company_status":null
 }

如果我只将用户集合返回到视图,并遍历每个用户并运行

$user->companyStatus->status 

值显示,但我试图将其包含在集合中以供 JSON API 使用。

更新

我尝试将外键添加到我的关系方法的选择调用中:

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status', 'user_id');
}

它现在返回以下内容:

{
   "id":2,
   "name":"Moderator",
   "email":"mod@company.com",
   "created_at":"2016-09-08 15:26:20",
   "updated_at":"2016-09-08 15:26:25",
   "company_status": {"status":"1","user_id":"2"}
 }

不确定这是否是最好/正确的方法。

【问题讨论】:

  • 不选择外键,无法确定其他表的相关数据/记录,所以需要它,你在正确的轨道上。

标签: laravel-5 eloquent


【解决方案1】:

好吧,我想通了。

我尝试将外键添加到我的关系方法的选择调用中:

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status', 'user_id');
}

然后返回:

{
   "id":2,
   "name":"Moderator",
   "email":"mod@company.com",
   "created_at":"2016-09-08 15:26:20",
   "updated_at":"2016-09-08 15:26:25",
   "company_status": {"status":"1","user_id":"2"}
}

没有外键 Laravel 显然无法确定另一张表的相关数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2020-03-05
    • 2018-12-01
    • 2020-06-02
    • 2018-05-29
    • 2021-08-15
    • 2017-04-21
    相关资源
    最近更新 更多