I'm trying to figure out why I'm getting the following error.
- Tests\Unit\WrestlerTest::it_can_get_injured_wrestlers
ErrorException: Undefined index: id.
/** @test */
public function it_can_get_injured_wrestlers()
{
$wrestler = factory(Wrestler::class)->states('injured')->create();
$injuredWrestlers = Wrestler::injured()->get();
$this->assertTrue($injuredWrestlers->contains($wrestler));
}
$factory->state(App\Wrestler::class, 'injured', function ($faker) {
return [
'status_id' => function(array $wrestler) {
factory(App\WrestlerInjury::class)->create([
'wrestler_id' => $wrestler['id']
]);
return 3;
},
];
});
<?php
use App\Wrestler;
use App\WrestlerBio;
use Illuminate\Database\Seeder;
class WrestlersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
for($i = 115; $i <= 120; $i++)
{
$wrestler = factory(Wrestler::class)->states('injured')->create(['name' => 'Wrestler '. $i, 'slug' => 'wrestler'.$i]);
$wrestler->bio()->save(factory(WrestlerBio::class)->create(['wrestler_id' => $wrestler->id, 'signature_move' => 'Signature Move '.$i]));
}
}
}
<?php
use App\Wrestler;
use App\WrestlerInjury;
use Carbon\Carbon;
use Illuminate\Database\Seeder;
class WrestlersInjuriesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$wrestlers = Wrestler::get(['id', 'hired_at'])->random(50);
foreach($wrestlers as $wrestler)
{
factory(WrestlerInjury::class)->create([
'wrestler_id' => $wrestler->id,
'injured_at' => function() use ($wrestler) {
return Carbon::parse($wrestler->hired_at)->addDays(30);
},
'healed_at' => function(array $injury) {
return Carbon::parse($injury['injured_at'])->addDays(30);
}
]);
}
$injuredWrestlerIds = Wrestler::where('status_id', 3)->get()->pluck('id');
foreach($injuredWrestlerIds as $wrestlerId)
{
factory(WrestlerInjury::class)->create(['wrestler_id' => $wrestlerId, 'healed_at' => null]);
}
}
}