【发布时间】:2014-06-29 15:53:31
【问题描述】:
我创建了模型,以便用户可以成为朋友。我有存储 user_id 和friend_id 的表 user_friends 。问题是,它只能单向工作。如果用户 1 将用户 2 添加为好友,则用户 2 将成为用户 1 的好友,但不会反向(用户 1 的用户 2 的好友),我该如何完成这样的事情?
用户模型
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);
【问题讨论】:
-
我不熟悉有问题的框架,但您可以执行类似...
SELECT friend_id FROM user_friends WHERE user_id = ? UNION SELECT user_id FROM user_friends WHERE friend_id = ?的操作。这应该会给你一个所有朋友的列表,不管链接是哪条路。 -
这是一种解决方案。但是 Laravel 和 Eloquent 使用不同的方法。对不起,我不能接受你的回答。
-
没问题,我知道这不是您想要的解决方案,这就是为什么它不是答案,只是评论。
标签: php laravel-4 eloquent relationship