我正在尝试为用户实现一个好友列表,以便用户可以有很多朋友
但是为了给朋友打电话,我很难让我的关系正确:
user
id
friends
user_id
friend_user_id
班级用户:
public function Friends(){
return $this->hasMany('App\User', 'friends');
}
所以Auth::User()->Friends
应该返回一个User
模型列表
您实际上没有“一对多”关系,而是“多对多”friends
作为您的加入表
尝试这个:
public function Friends(){
return $this->belongsToMany('App\User', 'friends', 'user_id', 'friend_user_id');
}
在您的用户类中,按如下方式定义函数:
public function Friends(){
return $this->hasMany('friends');
}
调用 $user->Friends()->get() 应该会返回你需要的一切。请注意,“朋友”应该是表的名称。
在创建与同一模型的关系时,您将执行以下操作:
模型/用户.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 )