[ 'slug' => '', 'children' => [ 'Страница 1' => [ 'children' => [ 'Подстраница 1' => [], 'Подстраница 2' => [], 'Подстраница 3' => [], ] ], 'Страница 2' => [], 'Страница 3' => [], 'Страница 4' => [], 'Страница 5' => [] ] ], 'Main page' => [ 'slug' => 'en', 'children' => [ 'page 1' => [ 'children' => [ 'subpage 1' => [], 'subpage 2' => [], 'subpage 3' => [] ] ], 'page 2' => [], 'page 3' => [], 'page 4' => [], 'page 5' => [] ] ], 'Головна сторінка' => [ 'slug' => 'ua', 'children' => [ 'Сторінка 1' => [ 'children' => [ 'Підсторінка 1' => [], 'Підсторінка 2' => [], 'Підсторінка 3' => [] ] ], 'Сторінка 2' => [], 'Сторінка 3' => [], 'Сторінка 4' => [], 'Сторінка 5' => [] ] ] ]; public function run() { if (!Page::query()->count()) { $ord = 0; collect($this->pages)->each(function ($data, $name) use (&$ord) { $data['ord'] = $ord++; $this->importPage($name, $data); }); } } public function importPage($name, $data, ?Page $parent = null) { $slug = array_key_exists('slug', $data) ? $data['slug'] : Str::slug(Str::transliterate($name)); $data += ['type' => $data['type'] ?? PageType::CONTENT, 'name' => $name]; $page = Page::firstOrCreate(['parent_id' => $parent->id ?? 0, 'slug' => $slug]); if ($v = collect($data)->except('children', 'registry_type')->all()) $page->update($v); if ($page->type === PageType::REGISTRY) $page->registry->update(['type' => $data['registry_type'] ?? RegistryType::SIMPLE]); $ord = 0; collect($data['children'] ?? [])->each(function($data, $name) use($page, &$ord) { $data['ord'] = $ord++; $this->importPage($name, $data, $page); }); } }