1
0
Fork 0
internet-everythings-agricu.../database/seeders/ArticleSeeder.php

102 lines
3.5 KiB
PHP

<?php
namespace Database\Seeders;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
use App\Models\{Article, ArticleCategory};
use Illuminate\Support\Arr;
use Database\Factories\ArticleFactory;
class ArticleSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$categoryList = [
['name' => '家用电器', 'children' => [
['name' => '电视', 'children' => [
['name' => '4K高清'],
['name' => '智慧屏'],
['name' => 'OLED电视'],
]],
['name' => '冰箱', 'children' => [
['name' => '对开门'],
['name' => '冰柜'],
['name' => '双门'],
]],
['name' => '空调', 'children' => [
['name' => '空调挂机'],
['name' => '空调柜机'],
['name' => '中央空调'],
]],
]],
['name' => '数码手机', 'children' => [
['name' => '手机通讯', 'children' => [
['name' => '游戏手机'],
['name' => '5G手机'],
['name' => '全面屏手机'],
]],
['name' => '手机配件', 'children' => [
['name' => '手机壳'],
['name' => '手机膜'],
['name' => '数据线'],
]],
['name' => '智能设备', 'children' => [
['name' => '智能手表'],
['name' => '监控摄像'],
['name' => '智能家居'],
]],
]],
['name' => '电脑办公', 'children' => [
['name' => '电脑整机', 'children' => [
['name' => '台式机'],
['name' => '笔记本'],
['name' => '一体机'],
]],
['name' => '电脑配件', 'children' => [
['name' => 'CPU'],
['name' => '显卡'],
['name' => '显示器'],
]],
['name' => '外设产品', 'children' => [
['name' => '鼠标'],
['name' => '键盘'],
['name' => 'U盘'],
]],
]],
];
ArticleCategory::truncate();
$this->createCategory($categoryList, 0);
Article::truncate();
(new ArticleFactory)->count(100)->create();
}
protected function createCategory($list, $pid = 0)
{
$sort = count($list);
foreach($list as $index => $item) {
$params = Arr::except($item, ['children']);
$parent = null;
if ($pid) {
$parent = ArticleCategory::find($pid);
}
$model = ArticleCategory::create(array_merge([
'sort' => $sort--,
'parent_id' => $parent ? $parent->id : 0,
'level' => $parent ? $parent->level + 1 : 1,
'path' => ($parent ? $parent->path . $parent->id : '') . '-',
], $params));
$children = data_get($item, 'children');
if ($children && count($children) > 0) {
$this->createCategory($children, $model->id);
}
}
}
}