【发布时间】:2021-05-18 10:49:29
【问题描述】:
我有三个不同的表:
- 用户:ID、姓名等...
- 团队:ID、creator_id 等...
- Team_Action:ID、team_id 等...
- 权限:ID、姓名等...
Team_Action 有一个带有权限的 FK (action_id),我需要该表的 name 值。 Team_Action 也有一个带有用户的 FK (user_id),我需要用户表的 name 值。
当时,我只能访问 ID,不能访问姓名。
我想知道是否有任何方法可以仅使用 Laravel 的模型来实现以下目标:
@foreach($team->teamAction as $tmdata)
<tr>
<td>
$team->teamMember->name
</td>
<td>
$team->teamAction->name
</td>
</tr>
@endforeach
我的团队模型:
//Infinite users belong to a team
public function teamMembers() {
return $this->hasMany(TeamsMembers::class,'team_id','id');
}
//Infinite actions per team
public function teamAction(){
return $this->hasMany(TeamsAction::class);
}
团队行动
public function team(){
return $this->belongsTo(Team::class);
}
权限
public function teamAction(){
return $this->belongsTo(TeamsAction::class,'action_id');}
团队成员
public function team() {
return $this->belongsTo(Team::class,'team_id','id');
}
public function teamMember(){
return $this->hasMany(User::class,'id','user_id');
}
我的控制器代码:
$teamID = $request->route('id');
$team = Team::where('id',$teamID)->get()->first();
foreach ($team->teamAction as $tta) {
$allTeamActions = Permission::where('id', $tta->action_id)->get();
}
foreach ($team->teamMembers as $ttm){
$allTeamMembers = User::where('id', $ttm->user_id)->get();
}
我的目标是这样的
$allTeamActions = Permission::where('id', $team->teamAction[0]->action_id->name)->get();
有没有办法通过 eloquent 模型检索那些模型的 FK 到我正在使用的模型的名称值? 1
场景如下: 每个成员都属于一个团队。 (表团队:ID、creator_id) 该团队在另一个名为 team_members (user_id, team_id) 的表中有多个成员。 一个团队有多个操作存储在另一个名为 team_actions 的表中,该表存储来自另一个名为权限的表 (team_id,action_id_user_id) 的 FK 值。 用户表存储用户的所有实际信息(也就是我想使用的他们的名字)
我想创建一个包含所有这些信息的视图表。 也就是说,我正在尝试通过 Teams 模型访问以下信息: 团队用户(他们的名字来自 users 表,用户的 ID 存储在 team_members 和 team_actions 中)
团队用户操作(来自权限表的操作名称,操作 ID 存储在 team_actions 中)
【问题讨论】:
-
我想我对我的哪一张桌子被认为是“枢轴”感到困惑。此外,当我尝试 allTeamActions 而不指定键值(在我的示例中为 0)时,我什么也得不到。
-
这不是我的情况。一个团队有许多团队操作,但团队操作属于团队
-
您的问题仍然不清楚并且非常令人困惑,您提到的表格与否不匹配。模型,你能添加你的场景的简短描述
-
你是对的。我会尝试改写我的问题
-
@MKhalidJunaid 请看我改写的问题
标签: php mysql laravel laravel-7 laravel-models