Laravel 5.2友谊系统:多对多的关系

时间:2016-05-30 07:50:17

标签: php laravel orm eloquent

表朋友:id,user_id,friend_id。

表user_profiles:id,user_id,first_name ...

如何通过Eloquent ORM获取用户朋友的列表?

user_id:5 | friend_id:6

user_id:6 | friend_id 5

类似的问题:

Friendship system with Laravel : Many to Many relationship

Laravel & Eloquent - Query 'Friends' Relationship

我无法理解谁调用方法getFriendsAttribute()。

如何做查询构建器。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以在User型号上定义关系:

class User extend Model
{
    ...

    // Get list of who sent me a friend request
    public function myFriends()
    {
        return $this->belongsToMany(get_class($this), 'friends', 'friend_id');
    }

    // Get the list of friends whom I invited
    public function friendsOf()
    {
        return $this->belongsToMany(get_class($this), 'friends', 'user_id', 'friend_id');
    }

    // Merge
    public function getFriendsAttribute()
    {
        return $this->myFriends->merge($this->friendOf);
    }
}

然后,您可以按$user->myFriends获取用户朋友列表,以查询朋友的名字:$user->myFriends()->where('first_name', '=', 'John')->get()