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/SBogers95/rentman.io/app/Komma/Shop/seeds/SampleProperties.php
<?php
/**
 * Created by PhpStorm.
 * User: julesgraus
 * Date: 02/02/2018
 * Time: 11:03
 */

namespace App\Komma\Shop\seeds;

use App\Komma\Languages\Models\Language;
use App\Komma\Shop\Properties\Models\Property;
use App\Komma\Shop\Properties\Models\PropertyKey;
use App\Komma\Shop\Properties\Models\PropertyKeyTranslation;
use App\Komma\Shop\Properties\Models\PropertyValue;
use App\Komma\Shop\Properties\Models\PropertyValueTranslation;
use Illuminate\Database\Seeder;

class SampleProperties extends Seeder
{
    public function run()
    {
        $propertiesData = [
            [
                'key' => [
                    'nl' => 'Primaire kleuren',
                    'en' => 'Primary colors',
                ],
                'values' => [
                    'nl' => [
                        'rood',
                        'groen',
                        'blauw',
                        'zwart',
                        'wit',
                    ],
                    'en' => [
                        'red',
                        'green',
                        'blue',
                        'black',
                        'white',
                    ],

                ],
            ],
            [
                'key' => [
                    'nl' => 'Materialen',
                    'en' => 'Materials',
                ],
                'values' => [
                    'nl' => [
                        'plastic',
                        'metaal',
                        'keramiek',
                        'glas',
                        'hout',
                    ],
                    'en' => [
                        'plastic',
                        'metal',
                        'ceramic',
                        'glass',
                        'wood',
                    ],

                ],
            ],
        ];

        $languages = [
            //            'en' => Language::where('iso_2', '=', 'en')->first(),
            'nl' => Language::where('iso_2', '=', 'nl')->first(),
        ];

        foreach ($propertiesData as $propertyData) {
            $key = new PropertyKey();
            $key->save();

            foreach ($languages as $iso_639_1 => $language) {
                $keyTranslation = new PropertyKeyTranslation();
                $keyTranslation->value = $propertyData['key'][$iso_639_1];
                $keyTranslation->language()->associate($language);
                $keyTranslation->translatable()->associate($key);
                $keyTranslation->save();

                foreach ($propertyData['values'][$iso_639_1] as $value) {
                    $property = new Property();
                    $property->code_name = str_slug($propertyData['key'][$iso_639_1].' - '.$value);
                    $property->key()->associate($key);

                    $propertyValue = new PropertyValue();
                    $propertyValue->save();

                    $property->value()->associate($propertyValue);

                    $valueTranslation = new PropertyValueTranslation();
                    $valueTranslation->value = $value;
                    $valueTranslation->translatable()->associate($propertyValue);
                    $valueTranslation->language()->associate($language);
                    $valueTranslation->save();

                    $property->save();
                }
            }
        }
    }
}