File: D:/HostingSpaces/SBogers10/otium.komma.nl/database/seeds/ServiceSeeder.php
<?php
use App\Services\Models\Service;
use App\Services\Models\ServiceTranslation;
use App\Site\Site;
use Illuminate\Support\Str;
use Komma\KMS\Globalization\Languages\Models\Language;
use App\Posts\Models\Post;
use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;
class ServiceSeeder extends Seeder
{
/**
* @var Collection
*/
private $languages;
/**
* @var \Faker\Generator
*/
private $faker;
/**
* @var Service
*/
private $rootService;
/**
* @var Site
*/
private $site;
/**
* Run the seed
*/
public function run()
{
//Create a faker to generate fake data.
$this->faker = Faker\Factory::create();
//Create a root model
$this->rootService = new Service(['active' => '0']);
$this->rootService->makeRoot();
//Get the languages
$this->languages = Language::whereIn('iso_2', config('seeds.languages'))->get(['id', 'iso_2']);
for ($index = 0; $index < config('seeds.models.services'); $index++) {
$this->createService();
}
}
/**
* @return Service
*/
private function createService(): Service
{
//Create the service itself...
$service = new Service([
'active' => 1,
]);
$service->makeLastChildOf($this->rootService);
foreach ($this->languages as $language) {
$faker = Faker\Factory::create(strtolower($language->iso_2) . '_' . strtoupper($language->iso_2));
$name = $faker->words(rand(3, 5), true);
$serviceTranslation = new ServiceTranslation([
'slug' => Str::slug($name),
'name' => $name,
'description' => $faker->sentence(10),
'meta_title' => $faker->text(70),
'meta_description' => $faker->sentence(10),
]);
$serviceTranslation->language()->associate($language);
$serviceTranslation->translatable()->associate($service);
$serviceTranslation->save();
}
return $service;
}
}