'article_category', 'name' => '文章分类', 'children' => [], ], [ 'key' => 'article_tag', 'name' => '文章标签', 'children' => [], ], [ 'key' => 'banner_address', 'name' => '广告位置', 'children' => [], ], [ 'key' => 'job', 'name' => '职位', 'children' => ['普通员工', '小组长', '主管'] ] ]; $this->insertKeywors($keywords); } protected function insertKeywors(array $data = [], ?Keyword $parent = null): void { /** @var array */ foreach ($data as $i => $item) { if (! is_array($item)) { $item = ['name' => $item]; } $item['parent_id'] = $parent?->id ?: 0; if (! array_key_exists('sort', $item)) { $item['sort'] = $i + 1; } $key = Arr::pull($item, 'key', $parent?->key . '_' . ($i + 1)); /** @var \App\Models\Keyword */ $keyword = Keyword::updateOrCreate( ['key' => $key], Arr::except($item, ['children']) ); $this->insertKeywors($item['children'] ?? [], $keyword->setRelation('parent', $parent)); } } }