从用户表中检索团队中每个成员的用户名

时间:2019-05-05 10:37:19

标签: laravel eloquent relationship

在建立User,Clan和Clan Member模型之间的关系时,我遇到了一些问题。我在三种模型中将关系定义为...

家族模型

public function clanMembers() {
    return $this->hasMany('App\ClanMember', 'clan_id', 'clan_id');
}

ClanMember模型

public function clan() {
    return $this->belongsTo('App\Clan', 'clan_id', 'clan_id');
}

我正在尝试获取所请求用户及其其他氏族成员的氏族详细信息。我正在使用以下内容:

$clanMembers = ClanMember::find(Auth::user()->id)->clan()->with('clanMembers')->get();

从上面,我得到正确的答复。

"data": [
        {
            "id": 2,
            "clan_leader_id": 3,
            "clan_name": "@rockers1",
            "clan_avatar": "",
            "game_id": 1,
            "max_members_count": 50,
            "clan_id": "1505ccd15b01",
            "created_at": "2019-05-04 04:31:44",
            "updated_at": "2019-05-04 04:31:44",
            "clan_leader_name": "" 
            "clan_members": [
                {
                    "id": 2,
                    "user_id": 2,
                    "clan_id": "1505ccd15b01",
                    "role_id": 2,
                    "status": 0,
                    "created_at": "2019-05-04 04:33:03",
                    "updated_at": "2019-05-04 04:33:03"
                }
            ]
        }
    ]

现在,我想在User和Clan模型之间建立一个关系,该模型具有id和clan_leader_id作为外键,以从Clan模型的User表中获取clan_leader_name并在适当的位置user_name user_idclan_members中的第一个。氏族成员具有user_id和用户ID作为外键。

1 个答案:

答案 0 :(得分:1)

查看many-to-many关系。您的模型/表格应为:UserClanClanUser,其中clan_user是包含clan_iduser_id的中间数据透视表。

您的Clan模型应包含以下关系

public function users()
{
    return $this->belongsToMany('App\User');
}

您的User模型应包含以下关系

public function clans()
{
    return $this->belongsToMany('App\Clan');
}

要获取用户氏族列表:

$clans = User::find($userId)->clans()->get();

要获取氏族用户列表:

$users = Clan::find($id)->users()->get();