[ 'children' => [ 'Руководство' => [ ], 'Документы' => [ 'children' => [ 'Документы об учреждении' => [], 'Закупки' => [], 'Бухгалтерская отчетность' => [], 'Государственное задание' => [], 'Нормативные правовые акты' => [], 'Антимонопольное законодательство' => [], 'Специальная оценка условий труда' => [] ] ], 'Структура' => [ ], 'Наблюдательный совет' => [ 'children' => [ 'Структура' => [], 'Документы' => [], 'Решения' => [] ] ], 'Закупки' => [ ], 'Противодействие коррупции' => [ 'children' => [ 'ФЗ, указы, постановления' => [], 'Ведомственные нормативные правовые акты' => [], 'Внутренние нормативные документы' => [], 'Антикоррупционная экспертиза' => [], 'Методические материалы' => [], 'Формы документов для заполнения' => [], 'Финансовые сведения' => [], 'Aттестационная комиссия' => [], 'Обратная связь' => [], 'Остальные документы' => [] ] ] ] ], 'Деятельность' => [ ], 'Коммерческие услуги' => [ ], 'Пресс-центр' => [ ], 'Контакты' => [ ] ]; public function run() { $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 = Str::slug(Str::transliterate($name)); $page = Page::firstOrCreate(['parent_id' => $parent->id ?? 0, 'slug' => $slug]); $page->update(['name' => $name]); if ($v = collect($data)->except('children')->all()) $page->update($v); $ord = 0; collect($data['children'] ?? [])->each(function($data, $name) use($page, &$ord) { $data['ord'] = $ord++; $this->importPage($name, $data, $page); }); } }