2017-02-20 94 views
0

我有users表,每個用戶可以添加好友。朋友是其他用戶。Laravel:選擇正確的關係

我創建了一個名爲user_friends與下列的數據透視表:

id | user_id | friend_id 

如何我可以定義一個關係,所以我可以用$user->friends()獲得用戶的朋友嗎?

+0

最重要的是要確保您的數據透視表的名稱是按字母順序排列與單數的表名。數據透視表必須是「friend_user」。 –

回答

0

第一:樞軸表中沒有ID爲行

你需要有一個表friend_user

friend_id | user_id 

安裝在用戶模式的關係

public function friends() 
{ 
    return $this->hasMany(User::class); 
} 

public function users() 
{ 
    return $this->belongsToMany(User::class); 
} 

我不是100%確定這是否可行,但想知道它是否可行!

+0

爲什麼第二個功能? – TheUnreal

+0

@TheUnreal我認爲你應該明確地把pivotable的名字作爲hasMany函數的第二個參數。然後它會工作。第二個功能不是必需的。沒有找到 –

+0

@JohnDoe當我把數據透視表作爲第二個參數它試圖尋找它作爲一列,'列的名稱:1054未知列「users.user_friends」' – TheUnreal

0

你可以做到這一點如下:

在用戶類中定義下列函數來獲取特定用戶的朋友:

public function friends() 
{ 
    return $this->hasMany("App\Friends","user_id","id"); 
} 

$user = Users::find($user_id); 
$user_friends = $user->friends()->get();