HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers10/base.komma.pro/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;
    }
}