Laravel 4中的用户之间的友谊

时间:2014-06-29 15:53:31

标签: php laravel-4 eloquent relationship

我创建了模型,以便用户可以成为朋友。我有表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);

1 个答案:

答案 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');
}

然后合并两个集合。