2016-07-23 42 views
1

我有一個名爲users表。每個用戶都有不同的事情:如何使用Laravel Eloquent返回多個關係?

  • 國家
  • 設備
  • 計算機
  • 類別

我創建了一個表中的每個的上述這些 '東西'。類似的情況如下:

1 | United States 
2 | United Kingdom 
3 | Australia 
4 | Canada 
5 | Italy 

等等

我存儲在用戶表中的這些值如下:

ID | Country | Device | Computer | Category | 
---|---------|--------|----------|----------| 
1 |  3 |  2 |  6 |  2 | 
2 |  4 |  3 |  9 |  1 | 

等等

現在的每上面的數字與相應的表ID相關聯。

我要的是做一個雄辯的查詢和搜索所有users和「替換」及其相應的從他們的幫手錶中的值。

我正在考慮爲users表中的每個事情做一個hasOne()雄辯的關係,但是我不確定如何一次調用/調用它們。

任何人都可以幫我TACKE這個問題?

+0

我很難給你正在使用laravel版本4,5,和5.2同時 – Jonathan

+0

請修復您的代碼到Laravel的相應版本使用的是相信。 –

+0

@Jonathan對不起,困惑,完成。 –

回答

4
$model = Model::with('relatedModel', 'relatedModelTwo')->get(); 

所以你的情況,也可以是這樣的。如果您只想要與user一起返回一個關係,請刪除其他關係。

$user = User::with('country', 'Device', 'Computer', 'Category')->get(); 

當你dd($user),你應該看到在relations陣列屬性相關的模型。

從那裏訪問關係的性質,它只是

$user->device->deviceAttribute

編輯點評:

口才將承擔外鍵使用型號名稱。因此,如果您的user表具有id列,則假定將在device表中有一列,名爲user_id。如果你這樣做了,那麼你就定下來了,不需要做任何事情。

如果您將您的列命名爲將其他模型與其他模型相關聯,那麼您需要將其作爲關係方法中的第二個參數傳遞。

public function device() 
{ 
    return $this->hasOne('App\Device', 'foreign_key_here',); 
} 

相反,如果你想獲得該設備屬於用戶,雄辯將嘗試在裝置臺的user_id列匹配用戶表中的列id。和以前一樣,如果您使用不同的列來關聯它們,請將外鍵聲明爲第二個參數。

public function user() 
{ 
    return $this->belongsTo('App\User', 'foreign_key_here',); 
} 

Laravel Doc One-To-One Relation

+0

感謝您的回答,它幾乎可以轉換所有內容。只剩下一件事了。我應該如何建立關係,以便可以檢索屬性ID的正確值? –

+0

@Radical_Activity以確保您獲得用戶的適當設備,計算機等? –

+0

是的。也許用'hasMany'?在設備上,電腦等? –