Friday, April 14, 2017

Two store() methods, one doesn't work (Call to undefined method save())

One of two similar store methods doesn't work. Could you clarify this for me?

Relations

  • A Team hasMany Users <> A User belongsTo a Team
  • A User hasMany Characters <> A Character belongsTo a User

Working Code (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');
}

Not Working (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');
}

Questions

  1. Why is the same method not available? Is it relation stuff?
  2. Is the create method better? Should I try to use it?

Thought I know what I'm doing, now it turns out I don't... Thank you for helping.



via Bensen

Advertisement