在建立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_id
中clan_members
中的第一个。氏族成员具有user_id
和用户ID作为外键。
答案 0 :(得分:1)
查看many-to-many关系。您的模型/表格应为:User
,Clan
和ClanUser
,其中clan_user
是包含clan_id
和user_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();