lcly-data-admin/database/seeders/KeywordsTableSeeder.php

63 lines
2.1 KiB
PHP

<?php
namespace Database\Seeders;
use Dcat\Admin\Admin;
use Illuminate\Database\Seeder;
use Illuminate\Support\Arr;
use Peidikeji\Keywords\Models\Keywords;
class KeywordsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$name = 'peidikeji.dcat-admin-extension-keywords';
$extension = Admin::extension();
if (! $extension->has($name)) {
return;
}
Admin::extension()->updateManager()->update($name);
Admin::extension()->enable($name);
Keywords::truncate();
$list = [
['key' => 'crops-category', 'name' => '农作物产业分类', 'value' => '', 'list' => [
['key' => 'crops-cate-nongye', 'name' => '农业', 'type_key' => 'crops-category', 'value' => ''],
['key' => 'crops-cate-yuye', 'name' => '渔业', 'type_key' => 'crops-category', 'value' => '',],
['key' => 'crops-cate-xumuye', 'name' => '畜牧业', 'type_key' => 'crops-category', 'value' => ''],
['key' => 'crops-cate-lingye', 'name' => '林业', 'type_key' => 'crops-category', 'value' => ''],
['key' => 'crops-cate-activity', 'name' => '其他', 'type_key' => 'crops-category', 'value' => ''],
]],
];
if ($list) {
$this->createKeywords($list);
}
}
private function createKeywords($keywords, $parentType = null)
{
foreach ($keywords as $item) {
if ($parentType) {
$type = Keywords::create([
'name' => $item['name'],
'key' => $item['key'] ?? $parentType->key.($parentType + 1),
'type_key' => $parentType->key,
'level' => ($parentType->level ?? 1) + 1,
'parent_id' => $parentType->id,
]);
} else {
$type = Keywords::create(Arr::except($item, 'list'));
}
$list = data_get($item, 'list');
if ($list) {
$this->createKeywords($list, $type);
}
}
}
}