0

我正在尝试为用户实现一个好友列表,以便用户可以有很多朋友

但是为了给朋友打电话,我很难让我的关系正确:

user
  id

friends
  user_id
  friend_user_id

班级用户:

public function Friends(){
    return $this->hasMany('App\User', 'friends');
}

所以Auth::User()->Friends应该返回一个User模型列表

4

3 回答 3

1

您实际上没有“一对多”关系,而是“多对多”friends作为您的加入表

尝试这个:

public function Friends(){
    return $this->belongsToMany('App\User', 'friends', 'user_id', 'friend_user_id');
}
于 2014-10-27T14:43:57.950 回答
0

在您的用户类中,按如下方式定义函数:

public function Friends(){
    return $this->hasMany('friends');
}

调用 $user->Friends()->get() 应该会返回你需要的一切。请注意,“朋友”应该是表的名称。

于 2014-10-27T15:19:33.973 回答
0

在创建与同一模型的关系时,您将执行以下操作:

模型/用户.cs

public function Friends()
{
   return $this->hasMany('User', 'user_friend_of', 'id'); // assuming user_friend_of is the FK on user-table
}

public function User()
{
    return $this->belongsTo('User');
}

这意味着您只有 1 个表,该表具有指向同一表中另一行的外键,例如: (id - name - user_friend_of )

于 2014-10-27T14:33:51.060 回答