2017-04-15 67 views
0

有什么方法来模拟另一个没有密码的登录(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魔法?

谢谢。

回答

0

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

你说,一个用户可以有很多人物,和一个团队可以有很多个字符。 字符可以在多个团队

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

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

/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);