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/vangogh.komma.pro/app/Komma/Shop/seeds/SampleCategories.php
<?php

namespace App\Komma\Shop\seeds;


use App\Komma\Globalization\Languages\Models\Language;
use App\Komma\Shop\Categories\Models\Category;
use App\Komma\Shop\Categories\Models\CategoryTranslation;
use Illuminate\Database\Seeder;

class SampleCategories extends Seeder
{
    public function run()
    {
        $root = new Category(['active' => '0', 'site_id' => null]); //Null for the default site
        $root->makeRoot();
        $root->save();

        $categories = [
            [
                'code_name' => 'gereedschap',
                'nl' => "Gereedschap",
                'de' => "Werkzeuge",
                'en' => "Tools",
                'children' => [
                    [
                        'code_name' => 'slijpen_schuren',
                        'nl' => 'Slijpen/schuren',
                        'de' => 'Schleifen / Scheuern',
                        'en' => 'Grinding / sanding'
                    ],
                    [
                        'code_name' => 'borstels_polijsten',
                        'nl' => 'Borstels/polijsten',
                        'de' => 'Bürsten / Polieren',
                        'en' => 'Brushes / polishing'
                    ],
                    [
                        'code_name' => 'boren',
                        'nl' => 'Boren',
                        'de' => 'Bohren',
                        'en' => 'Drill sets'
                    ],
                    [
                        'code_name' => 'tap_en_snijsets',
                        'nl' => 'Tap en snijsets',
                        'de' => 'Klopfen und Schneiden Sätze',
                        'en' => 'Tap and cutting sets'
                    ],
                    [
                        'code_name' => 'tangen',
                        'nl' => 'Tangen',
                        'de' => 'Zangen',
                        'en' => 'Pliers'
                    ],
                    [
                        'code_name' => 'hamers_koevoet',
                        'nl' => 'Hamers / koevoet',
                        'de' => 'Hämmer / Brecheisen',
                        'en' => 'Hammers / crowbar'
                    ],
                    [
                        'code_name' => 'bijlen',
                        'nl' => 'Bijlen',
                        'de' => 'Achsen',
                        'en' => 'Axes'
                    ],
                    [
                        'code_name' => 'klemmen_en_haken',
                        'nl' => 'Klemmen en haken',
                        'de' => 'Klammern und Haken',
                        'en' => 'Clamps and hooks'
                    ],
                    [
                        'code_name' => 'schroevendraaiers_en_bits',
                        'nl' => 'Schroevendraaiers en bits',
                        'de' => 'Schraubendreher und Bits',
                        'en' => 'Screwdrivers and bits'
                    ],
                    [
                        'code_name' => 'imbus_torx',
                        'nl' => 'Inbus / Torx',
                        'de' => 'Inbus / Torx',
                        'en' => 'Allen keys / Torx'
                    ],
                    [
                        'code_name' => 'dop_bitsets',
                        'nl' => 'Dop/bitsets',
                        'de' => 'Stecklüssels / Bit-Satz',
                        'en' => 'Wrenches / Bitsets'
                    ],
                    [
                        'code_name' => 'zagen',
                        'nl' => 'Zagen',
                        'de' => 'Säge',
                        'en' => 'Saw'
                    ],
                    [
                        'code_name' => 'meten',
                        'nl' => 'Meten',
                        'de' => 'Messen',
                        'en' => 'Measure'
                    ],
                    [
                        'code_name' => 'steek_ring_en_sleutels',
                        'nl' => 'Steek/ring en moersleutels',
                        'de' => 'Stich / Ring und Schraubenschlüssel',
                        'en' => 'Stitch / ring and wrenches'
                    ],
                    [
                        'code_name' => 'assortimentsdozen',
                        'nl' => 'Assortimentsdozen',
                        'de' => 'Sortimentskästen',
                        'en' => 'Assortment boxes'
                    ],
                    [
                        'code_name' => 'ratels_en_toebehoren',
                        'nl' => 'Ratels & toebehoren',
                        'de' => 'Ratsche & Zubehör',
                        'en' => 'Ratchets & Accessories'
                    ],
                    [
                        'code_name' => 'gereedschapsets',
                        'nl' => 'Gereedschapsets',
                        'de' => 'Werkzeug-Sätze',
                        'en' => 'Tool sets'
                    ],
                    [
                        'code_name' => 'diversen',
                        'nl' => 'Diversen',
                        'de' => 'Verschiedenes',
                        'en' => 'Miscellaneous'
                    ],
                ]
            ],
            [
                'code_name' => 'wielen_banden',
                'nl' => "Wielen & banden",
                'de' => "Räder und reifen",
                'en' => "Wheels & tires",
                'children' => [
                    [
                        'code_name' => 'bok_en_zwenkwielen',
                        'nl' => 'Bok & zwenkwielen',
                        'de' => 'Lenkrollen/ Schwenkräder',
                        'en' => 'Swivel / castor wheels'
                    ],
                    [
                        'code_name' => 'lucht_en_pu_banden',
                        'nl' => 'Lucht & PU banden',
                        'de' => 'Air Räder und PU-Räder',
                        'en' => 'Air & PU wheels'
                    ],
                    [
                        'code_name' => 'diversen',
                        'nl' => 'Diversen',
                        'de' => 'Verschiedenes',
                        'en' => 'Miscellaneous'
                    ]
                ]
            ],
            [
                'code_name' => 'auto',
                'nl' => "Auto",
                'de' => "Auto",
                'en' => "Auto",
                'children' => [
                    [
                        'code_name' => 'automotive_gereedschap',
                        'nl' => 'Automotive gereedschap',
                        'de' => 'Kfz-Werkzeuge',
                        'en' => 'Automotive tools'
                    ],
                    [
                        'code_name' => 'spanbanden',
                        'nl' => 'Spanbanden',
                        'de' => 'Spanngurte',
                        'en' => 'Tension belts'
                    ],
                    [
                        'code_name' => 'aanhangwagenonderdelen',
                        'nl' => 'Aanhangwagenonderdelen',
                        'de' => 'Anhänger Teile',
                        'en' => 'Trailer parts'
                    ],
                    [
                        'code_name' => 'luchtgereedschap',
                        'nl' => 'Luchtgereedschap',
                        'de' => 'Luftwerkzeuge',
                        'en' => 'Air tools'
                    ],
                    [
                        'code_name' => 'werkplaatsuitrusting',
                        'nl' => 'Werkplaatsuitrusting',
                        'de' => 'Werkstattausrüstung',
                        'en' => 'Workshop equipment'
                    ],
                    [
                        'code_name' => 'diversen',
                        'nl' => 'Diversen',
                        'de' => 'Verschiedenes',
                        'en' => 'Miscellaneous'
                    ],
                ]
            ],
            [
                'code_name' => 'in_en_om_het_huis',
                'nl' => "In en om het huis",
                'de' => "In und um das Haus",
                'en' => "In and around the house",
                'children' => [
                    [
                        'code_name' => 'electra',
                        'nl' => 'Elecktra',
                        'de' => 'Elektra',
                        'en' => 'Electricity'
                    ],
                    [
                        'code_name' => 'tuin',
                        'nl' => 'Tuin',
                        'de' => 'Garten',
                        'en' => 'Garden'
                    ],
                    [
                        'code_name' => 'douce_en_bad',
                        'nl' => 'Douche & bad',
                        'de' => 'Dusche & Bad',
                        'en' => 'Shower & bath'
                    ],
                    [
                        'code_name' => 'diversen',
                        'nl' => 'Diversen',
                        'de' => 'Verschiedenes',
                        'en' => 'Miscellaneous'
                    ]
                ]
            ],
            [
                'code_name' => 'vrije_tijd_hobby',
                'nl' => "Vrije tijd & hobby",
                'de' => "Freizeit & hobby",
                'en' => "Leisure & hobby",
                'children' => [
                    [
                        'code_name' => 'fiets',
                        'nl' => 'Fiets',
                        'de' => 'Fahrrad',
                        'en' => 'Bicycle'
                    ],
                    [
                        'code_name' => 'mensen_en_scharen',
                        'nl' => 'Messen & scharen',
                        'de' => 'Messer & Schere',
                        'en' => 'Knives & Scissors'
                    ],
                    [
                        'code_name' => 'lampen',
                        'nl' => 'Lampen',
                        'de' => 'Lampen',
                        'en' => 'Lamps'
                    ],
                    [
                        'code_name' => 'diversen',
                        'nl' => 'Diversen',
                        'de' => 'Verschiedenes',
                        'en' => 'Miscellaneous'
                    ]
                ]
            ]
        ];


        foreach ($categories as $mainCategoryData) {
            $mainCategory = $this->createCategory($mainCategoryData, $root);
        }
    }

    /**
     * Create a category from the array data you pass it.
     *
     * @param $categoryData
     * @return Category
     */
    private function createCategory($categoryData, $parent)
    {
        $category = new Category();

        $category->code_name = $categoryData['code_name'];
        $category->active = 1;
        $category->makeLastChildOf($parent); //Also saves

        foreach ($categoryData as $key => $value) {
            switch ($key) {
                case 'code_name':
                    break;
                case 'children':
                    foreach ($value as $childCategoryData) {
                        $this->createCategory($childCategoryData, $category);
                    }
                    break;
                default:
                    $language = Language::where('iso_2', '=', $key)->first();
                    if (!$language) {
                        break;
                    }
                    $translation = new CategoryTranslation();
                    $translation->language()->associate($language);
                    $translation->translatable()->associate($category);
                    $translation->slug = str_slug($value);
                    $translation->name = $value;
                    $translation->meta_title = $value;
                    $translation->save();
            }
        }

        return $category;
    }
}