两种类似的存储方法之一不起作用。你能帮我解释一下吗?
关系
- 一个团队有许多用户<>一个用户属于一个团队
- 一个用户有很多角色<>一个角色属于一个用户
工作代码(CharacterController)
public function store()
{
$fighters = Fighter::pluck('name')->toArray();
$this->validate(request(), [
'name' => 'required|min:3|max:25|alpha_num|not_in:'.Rule::notIn($fighters).'unique:characters',
'fighter' => 'required|in:'.Rule::in($fighters),
]);
auth()->user()->characters()->save(new Character([
'name' => request('name'),
'fighter' => request('fighter'),
]));
return redirect()->route('character.index');
}
不工作(TeamController)
public function store()
{
$this->validate(request(), [
'name' => 'required|min:3|max:25|alpha_num|unique:teams',
]);
auth()->user()->team()->save(new Team([
'name' => request('name'),
'fame' => 0,
]));
return redirect()->route('team.index');
}
问题
- 为什么同样的方法不可用?是关系的东西吗?
- 创建方法更好吗?我应该尝试使用它吗?
我以为我知道自己在做什么,现在看来我不知道... 感谢您的帮助。
最佳答案
team()
是一个 belongsTo
关系,您的用户表中可能有一个 team_id 列,您希望将其与团队关联。
public function store()
{
$this->validate(request(), [
'name' => 'required|min:3|max:25|alpha_num|unique:teams',
]);
// create and save team
$team = new Team([
'name' => request('name'),
'fame' => 0,
]);
$team->save();
// associate current authenticated user with team (set foreign key) and save user
auth()->user()->team()->associate($team)->save();
return redirect()->route('team.index');
}
关于laravel - 两个 store() 方法,其中一个不起作用(调用未定义的方法 save()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43412973/