Laravel 5 获取具有一个关系的集合

Laravel 5 获取具有一个关系的集合,laravel-5,eloquent,Laravel 5,Eloquent,在我的Laravel 5.2用户模型中,我与他们的公司状态建立了关系 public function companyStatus() { return $this->hasOne('CompanyUser')->select('status'); } CompanyUser表具有公司id、用户id和状态字段 然后在控制器中执行以下操作: $company = Company::find($company_id); $users = Company

在我的Laravel 5.2用户模型中,我与他们的公司状态建立了关系

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status');
}
CompanyUser表具有公司id、用户id和状态字段

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

    $company   = Company::find($company_id);
    $users     = CompanyUser::where('company_id', $company_id)->pluck('user_id')->toArray();
    $user_data = User::with('companyStatus')->find($users);
    {
       "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"}
     }
但是,当我转储user_数据数组时,它包含与公司相关的所有用户,但只显示其状态关系的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使用的集合中

更新

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

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status', 'user_id');
}
public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status', 'user_id');
}
现在它返回以下内容:

    $company   = Company::find($company_id);
    $users     = CompanyUser::where('company_id', $company_id)->pluck('user_id')->toArray();
    $user_data = User::with('companyStatus')->find($users);
    {
       "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"}
     }
不确定这是不是最好/正确的方法。

好的,我想出来了

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

public function companyStatus()
{
    return $this->hasOne('CompanyUser')->select('status', 'user_id');
}
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显然无法确定另一个表上的相关数据。

如果不选择外键,它无法确定其他表上的相关数据/记录,因此它是必需的,并且您正处于正确的轨道上。