通过

时间:2017-04-15 21:56:02

标签: laravel laravel-5 eloquent

有什么方法可以模拟另一个没有密码的登录(1个用户,一些可玩的角色)。

用户创建团队时有效。但是,角色创建/加入团队更有意义。由于用户有多个角色,我完全搞砸了。我怎么知道所有角色创建/加入团队中的哪一个?只有1个用户这样做很容易。

可能缺少一些通用的编程技巧,但我正在学习!

关系
用户有多个字符<>字符属于用户
角色所属团队<>团队拥有多个角色

网址
在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魔法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

虽然有一些缺失信息,但您的方法可能不正确。

您已声明用户可以包含多个字符,并且团队可以包含多个字符。 角色可以在多个团队上吗?

既然你问过两个问题,我会先回答第一个问题。

由于您在询问如何获取团队角色,因此首先要考虑您需要先了解团队才能查找角色。所以你的网址可能是这样的:

/team/{team id}/

由于您想要专门了解团队中的角色,而不一定了解团队本身,您可以附上网址来询问这些角色。

/team/{team id}/characters

对于问题的后半部分,您不需要了解用户或其角色。你的关系中的方向与你为网址的方向相同。

class Team extends Model {
  public function characters() {
    return $this->hasMany(Character::class);
  }
}

在您的控制器中:

$team = Team::with(['characters'])->find($teamId);