File: D:/HostingSpaces/farmfun/reserveren.farmfun.be/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;
}
}