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/beat-the-barn.komma.nl/database/seeds/VacancySeeder.php
<?php

use App\Vacancies\Models\Vacancy;
use App\Vacancies\Models\VacancyTranslation;
use Illuminate\Support\Str;
use Komma\KMS\Globalization\Languages\Models\Language;

use Illuminate\Database\Seeder;
use Illuminate\Support\Collection;

class VacancySeeder extends Seeder
{
    /** @var Vacancy */
    private $rootVacancy;

    /** @var \Faker\Generator */
    private $faker;

    /** @var Collection */
    private $languages;

    /**
     * Run the seed
     */
    public function run()
    {
        //Create a faker to generate fake data.
        $this->faker = Faker\Factory::create();

        //Create the root vacancy
        $this->rootVacancy = new Vacancy(['active' => 0]);
        $this->rootVacancy->makeRoot();

        //Get the languages
        $this->languages = Language::whereIn('iso_2', config('seeds.languages'))->get(['id', 'iso_2']);

        for($index = 0; $index < config('seeds.models.vacancies'); $index++) {
            $this->createVacancy();
        }
    }

    /**
     * @param null $jobTitle
     *
     * @return Vacancy
     */
    private function createVacancy($jobTitle = null): Vacancy
    {
        //Create the vacancy itself...
        $vacancy = new Vacancy([
            'active'  => 1,
            'code_name'    => $this->faker->words(3,true),
        ]);

        $vacancy->makeLastChildOf($this->rootVacancy);
        $vacancy->save();

        foreach ($this->languages as $language) {
            $faker = Faker\Factory::create(strtolower($language->iso_2) . '_' . strtoupper($language->iso_2));

            $vacancyTitle = $faker->jobTitle;
            $vacancyTranslation = new VacancyTranslation([
                'slug' => Str::slug($vacancyTitle),
                'name' => $vacancyTitle,
            ]);
            $vacancyTranslation->language()->associate($language);
            $vacancyTranslation->translatable()->associate($vacancy);
            $vacancyTranslation->save();
        }

        return $vacancy;
    }
}