2016-09-21 87 views
1

在我的Laravel 5.2用戶模型中,我與他們的公司狀態建立了關係。通過HasOne關係獲取集合

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

的CompanyUser表具有COMPANY_ID,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); 

但是當我轉儲中的用戶數據數組它擁有所有的與公司有關的用戶,但僅顯示null因其狀態關係

{ 
     "id":2, 
     "name":"Moderator", 
     "email":"[email protected]", 
     "created_at":"2016-09-08 15:26:20", 
     "updated_at":"2016-09-08 15:26:25", 
     "company_status":null 
    } 

如果我只是用戶採集但是返回到視圖,並且每個用戶迭代和運行

$user->companyStatus->status 

中值顯示,但我想包括這個集合中的JSON API來消費。

UPDATE

我嘗試添加的外鍵選擇呼叫我的關係方法:

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

,現在返回以下:

{ 
     "id":2, 
     "name":"Moderator", 
     "email":"[email protected]", 
     "created_at":"2016-09-08 15:26:20", 
     "updated_at":"2016-09-08 15:26:25", 
     "company_status": {"status":"1","user_id":"2"} 
    } 

不知道盡管如此,這是最好的/正確的方法。

+0

沒有選擇外鍵,它不能確定其他表上的相關數據/記錄,所以它是必需的,你在正確的軌道上。 –

回答

0

好吧我想通了。

我嘗試添加的外鍵選擇呼叫我的關係方法:

public function companyStatus() 
{ 
    return $this->hasOne('CompanyUser')->select('status', 'user_id'); 
} 
and it now returns the following: 

然後返回:

{ 
    "id":2, 
    "name":"Moderator", 
    "email":"[email protected]", 
    "created_at":"2016-09-08 15:26:20", 
    "updated_at":"2016-09-08 15:26:25", 
    "company_status": {"status":"1","user_id":"2"} 
} 

沒有外鍵Laravel顯然不能確定相關數據在另一張桌子上。