我有一个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,
]);
}