与 eloquent 建立友谊关系的最佳方式是什么?我的表模式如下,我想定义一个关系,我可以检索所有朋友,如下所示。
<?php
class User extends Eloquent {
public function friends() {
return $this->belongsToMany('User', 'friendships', 'user_id', 'friend_id')->orWhere($this->id,'=', 'friend_id');
}
}
+----+---------+-----------+----------+---------------------+---------------------+
| id | user_id | friend_id | state | created_at | updated_at |
+----+---------+-----------+----------+---------------------+---------------------+
| 1 | 3 | 1 | accepted | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
| 2 | 2 | 3 | accepted | 0000-00-00 00:00:00 | 0000-00-00 00:00:00 |
+----+---------+-----------+----------+---------------------+---------------------+
当我寻找用户 id 为 3 的朋友时,上面的关系接近工作,我得到用户 1 和 3,但显然我想要 1 和 2。
友谊桌
user_id:请求
好友的用户idfriend_id:目标好友的用户id
状态:好友状态是挂起、接受还是阻塞。
created_at 和 updated_at
我知道Laravel 的解决方案 多对多自引用表仅适用于一种方式,我可以从关系双方检索朋友,但我必须是两行,例如,如果用户 1 和 3 是朋友,那么在一行 user_id = 3 和friend_id = 1,在下一行反之亦然。(或者如果我没有两行,我必须做两个查询)。