diff --git a/database/seeders/KeywordSeeder.php b/database/seeders/KeywordSeeder.php index a53fda0..167939c 100644 --- a/database/seeders/KeywordSeeder.php +++ b/database/seeders/KeywordSeeder.php @@ -3,6 +3,7 @@ namespace Database\Seeders; use App\Models\Keyword; +use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Arr; @@ -10,44 +11,51 @@ class KeywordSeeder extends Seeder { /** * Run the database seeds. - * - * @return void */ - public function run() + public function run(): void { Keyword::truncate(); + $list = [ - ['key' => 'treat_type', 'name' => '诊疗类别', 'children' => [ - ['key' => 'treat_head', 'name' => '头疗', 'content' => '按摩意见:', 'image' => url('images/treat_head.png')], - ['key' => 'treat_normal', 'name' => '看病', 'content' => '病症:', 'image' => url('images/treat_normal.png')], + ['key' => 'product_category', 'name' => '商品分类', 'children' => [ + ['name' => '家用电器', 'children' => [ + ['name' => '电视'], + ['name' => '冰箱'], + ['name' => '洗衣机'], + ]], + ['name' => '手机数码', 'children' => [ + ['name' => '手机'], + ['name' => '手机配件'], + ['name' => '摄影摄像'], + ]], + ['name' => '电脑办公', 'children' => [ + ['name' => '电脑整机'], + ['name' => '外设产品'], + ['name' => '网络产品'], + ]] + ]], + ['key' => 'article_category', 'name' => '文章分类', 'children' => [ + ['name' => '后端'], + ['name' => '前端'], + ['name' => 'Android'], + ['name' => 'IOS'], + ['name' => '开发工具'], + ['name' => '人工智能'], ]] ]; + $this->createByTree($list); } protected function createByTree($list, $parent = null) { - $count = count($list); foreach ($list as $index => $item) { - $key = data_get($item, 'key'); - if (! $key) { - if (! $parent) { - throw new \Exception('key 必填'); - } - $key = $parent->key.'_'.($index + 1); - } - $attributes = [ - 'key' => $key, - 'parent_id' => data_get($parent, 'id', 0), - 'path' => ($parent ? $parent->path.$parent->id : '').'-', - 'level' => data_get($parent, 'level', 0) + 1, - 'sort' => $count - $index, - ]; - if ($id = data_get($item, 'id')) { - $attributes['id'] = $id; - } + $params = Arr::except($item, ['children']); + $params['sort'] = $index; + $params['parent_id'] = $parent ? $parent->id : 0; + $params['key'] = data_get($item, 'key', data_get($parent, 'key') . '_' . $index); + $model = Keyword::create($params); - $model = Keyword::create(array_merge($attributes, Arr::except($item, ['children']))); if ($children = data_get($item, 'children')) { $this->createByTree($children, $model); }