我创建了模型,以便用户可以成为朋友。我有表user_friends,其中存储了user_id和friend_id。问题是,它只能单向工作。如果用户1将用户2添加为朋友,则用户2将是用户1的朋友但不反向(用户2的用户1朋友)如何才能完成这样的事情?
用户模型
public function friends()
{
return $this->belongsToMany('User','user_friends','user_id','friend_id');
}
和User_Friend模型
public function user()
{
return $this->belongsToMany('User');
}
寻找朋友
$friends = User::find($user->id)->friends;
我保存新友谊的控制器的一部分
$friendData = array('user_id' => $invite->id,); //$invite is result of $invite->save()
$friend = User::find($user->id)->friends()->attach($friendData);
答案 0 :(得分:1)
你可以做的一件事是存储和反向关系。
$friendData = ['user_id' => $invite->id];
$user = User::find($user->id);
$user->friends()->attach($friendData);
$friend = User::find($invite->id);
$friend->friends()->attach($user);
否则您可以检索反向关系
public function reverseFriends()
{
return $this->hasManyThrough('User', 'User_Friend', 'friend_id', 'user_id');
}
然后合并两个集合。