Laravel 5在整数上调用成员函数createPlayer()

时间:2017-05-30 14:51:49

标签: php laravel-5

我有一个store程序,可以为登录用户创建一个团队,如下所示:

public function store(Request $request)
{
    /**
     * Create Team
     */
    $this->validate($request, [
        'name' => 'required|min:3|max:255',
    ]);

    $team = Auth::user()->createTeam($request);

    /**
     * Create players
     */
    $players = [
        1   => 'ARQ',
        2   => 'DEF',
        3   => 'DEF',
        4   => 'DEF',
        5   => 'DEF',
        6   => 'MED',
        7   => 'MED',
        8   => 'MED',
        9   => 'ATA',
        10  => 'MED',
        11  => 'ATA',
        12  => 'ARQ',
        13  => 'DEF',
        14  => 'DEF',
        15  => 'MED',
        16  => 'MED',
        17  => 'MED',
        18  => 'ATA',
        19  => 'DEF',
        20  => 'ARQ',
        21  => 'DEF',
    ];

    foreach ($players as $num => $pos) {
        $player = $team->createPlayer($num, $pos);
    }

    $team->save();

    return redirect()->route('strategy');
}

这在大多数情况下都可以正常工作,但有时会抛出一个Call to a member function createPlayer() on integer并且无法复制它,但最奇怪的部分是,即使在抛出团队和玩家的错误时也是如此通常创建到数据库中。刷新页面后,一切都按预期继续。

那么,为什么即使一切正常工作,这个错误也会出现?如何将$team实例更改为整数?

修改

createTeam功能

public function createTeam($request)
{
    if (!is_null($this->team)) {
        return $this->updateTeam($request);
    } else {
        return $this->team()->create($request->only(['name']));
    }
}

createPlayer功能:

public function createPlayer($number, $position)
{
    $faker = Faker\Factory::create('es_AR');

    $position = strtoupper($position);

    return $this->players()->create([
        'first_name' => $faker->firstName('male'),
        'last_name' => $faker->lastName('male'),
        'position' => $position,
        'number' => $number,
    ]);
}

0 个答案:

没有答案