File: D:/HostingSpaces/SBogers10/otium.komma.nl/database/seeds/TeamMemberSeeder.php
<?php
use App\TeamMembers\Models\TeamMemberTranslation;
use App\TeamMembers\Models\TeamMember;
use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;
use Komma\KMS\Globalization\Languages\Models\Language;
class TeamMemberSeeder extends Seeder
{
/** @var Collection */
private $languages;
/** @var \Faker\Generator */
private $faker;
/** @var TeamMember */
protected $rootTeamMember;
/**
* Run the seed
*/
public function run()
{
//Create a faker to generate fake data.
$this->faker = Faker\Factory::create();
//Get the languages
$this->languages = Language::whereIn('iso_2', config('seeds.languages'))->get(['id', 'iso_2']);
//Create the root page
$this->rootTeamMember = new TeamMember(['active' => 0]);
$this->rootTeamMember->makeRoot();
for($index = 0; $index < config('seeds.models.teamMembers'); $index++) {
$this->createTeamMember();
}
}
/**
* @return TeamMember
*/
private function createTeamMember(): TeamMember
{
$teamMember = new TeamMember([
'active' => 1,
'name' => $this->faker->firstName.' '.$this->faker->lastName,
'email' => $this->faker->safeEmail,
]);
$teamMember->makeLastChildOf($this->rootTeamMember);
foreach ($this->languages as $language) {
$faker = Faker\Factory::create(strtolower($language->iso_2) . '_' . strtoupper($language->iso_2));
$teamMemberTranslation = new TeamMemberTranslation([
'function' => $faker->jobTitle,
]);
$teamMemberTranslation->language()->associate($language);
$teamMemberTranslation->translatable()->associate($teamMember);
$teamMemberTranslation->save();
}
return $teamMember;
}
}