模拟第二次登录并通过关系查询
问题描述:
有什么方法来模拟另一个没有密码的登录(1个用户,一些可玩字符)。模拟第二次登录并通过关系查询
它在用户创建团队时起作用。但是,角色创建/加入团队确实更有意义。由于用户有很多字符,我完全拧紧。我如何知道哪些角色创建/加入团队?只有一位用户这样做很容易。
可能缺少一些一般的编程技巧,但我正在学习!
关系
用户的hasMany人物<>字符属于关联用户
性格属于关联团队<>团队的hasMany特点
URL
在team.index我真的不明白如何收集所有一个团队的人物。 网址目前只是/team
。我必须使用类似/{character}/{team}
的东西吗?但我喜欢简单的/team
。
代码
我想出了以下的变种,但如果感觉错。并且是错误的:-D
// how would the app know which of the Characters.Team we need. App and me don't know...
$team = auth()->user()->characters()->team()->first();
$characters = \App\Character::where('team_id', $team->id)->get();
请澄清这一点对我来说,请!
关系错了吗?
我的方法错了吗?
我是否错过简单的Laravel魔法?
谢谢。
答
您的方法可能是不正确的,虽然有一些缺少的信息。
你说,一个用户可以有很多人物,和一个团队可以有很多个字符。 字符可以在多个团队?
既然你有两个问题,我会回答第一个,第一个。
由于您在询问如何获取团队的角色,请首先考虑您需要先了解团队,然后才能查找角色。所以,你的网址可能是这样的:
/team/{team id}/
既然你想知道具体是关于球队的特点,并不见得对球队本身,你可以将网址询问这些字符。
/team/{team id}/characters
对于问题的后半部分,您不需要了解用户或他们的角色。就像你为url所做的那样,从你的关系中来自同一个方向。
class Team extends Model {
public function characters() {
return $this->hasMany(Character::class);
}
}
在你的控制器:
$team = Team::with(['characters'])->find($teamId);