1
0
Fork 0
owl-admin-starter/database/seeders/KeywordSeeder.php

65 lines
2.0 KiB
PHP

<?php
namespace Database\Seeders;
use App\Models\Keyword;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
class KeywordSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
Keyword::truncate();
$list = [
['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)
{
foreach ($list as $index => $item) {
$params = Arr::except($item, ['children']);
$params['sort'] = $index + 1;
$params['parent_id'] = $parent ? $parent->id : 0;
$params['key'] = data_get($item, 'key', data_get($parent, 'key') . '_' . $index);
$model = Keyword::create($params);
if ($children = data_get($item, 'children')) {
$this->createByTree($children, $model);
}
}
}
}