145 lines
10 KiB
PHP
145 lines
10 KiB
PHP
<?php
|
||
|
||
namespace Database\Seeders;
|
||
|
||
use App\Models\Category;
|
||
use App\Models\Post;
|
||
use App\Models\Tag;
|
||
use App\Models\User;
|
||
use Illuminate\Database\Seeder;
|
||
use Illuminate\Support\Facades\Hash;
|
||
|
||
class BlogSeeder extends Seeder
|
||
{
|
||
/**
|
||
* Run the database seeds.
|
||
*/
|
||
public function run(): void
|
||
{
|
||
// 创建管理员用户
|
||
$admin = User::firstOrCreate(
|
||
['email' => 'admin@example.com'],
|
||
[
|
||
'name' => 'Admin',
|
||
'password' => Hash::make('password'),
|
||
]
|
||
);
|
||
|
||
// 创建分类
|
||
$categories = [
|
||
['name' => '生活随笔', 'slug' => 'life', 'description' => '记录生活中的点滴感悟', 'sort_order' => 1],
|
||
['name' => '旅行日记', 'slug' => 'travel', 'description' => '探索世界的每一个角落', 'sort_order' => 2],
|
||
['name' => '美食探店', 'slug' => 'food', 'description' => '寻找城市中的美味', 'sort_order' => 3],
|
||
['name' => '穿搭分享', 'slug' => 'fashion', 'description' => '日常穿搭灵感', 'sort_order' => 4],
|
||
['name' => '摄影作品', 'slug' => 'photography', 'description' => '用镜头记录美好', 'sort_order' => 5],
|
||
['name' => '读书笔记', 'slug' => 'reading', 'description' => '阅读与思考', 'sort_order' => 6],
|
||
];
|
||
|
||
foreach ($categories as $categoryData) {
|
||
Category::firstOrCreate(['slug' => $categoryData['slug']], $categoryData);
|
||
}
|
||
|
||
// 创建标签
|
||
$tags = [
|
||
['name' => '日常', 'slug' => 'daily', 'color' => '#6366f1'],
|
||
['name' => '推荐', 'slug' => 'recommend', 'color' => '#ec4899'],
|
||
['name' => '种草', 'slug' => 'wishlist', 'color' => '#22c55e'],
|
||
['name' => '打卡', 'slug' => 'check-in', 'color' => '#f59e0b'],
|
||
['name' => '治愈', 'slug' => 'healing', 'color' => '#14b8a6'],
|
||
['name' => '灵感', 'slug' => 'inspiration', 'color' => '#8b5cf6'],
|
||
['name' => '极简', 'slug' => 'minimal', 'color' => '#64748b'],
|
||
['name' => '氛围感', 'slug' => 'aesthetic', 'color' => '#d946ef'],
|
||
['name' => '干货', 'slug' => 'tips', 'color' => '#0ea5e9'],
|
||
['name' => '宝藏', 'slug' => 'treasure', 'color' => '#f43f5e'],
|
||
];
|
||
|
||
foreach ($tags as $tagData) {
|
||
Tag::firstOrCreate(['slug' => $tagData['slug']], $tagData);
|
||
}
|
||
|
||
$allCategories = Category::all();
|
||
$allTags = Tag::all();
|
||
|
||
// 创建示例文章
|
||
$posts = [
|
||
[
|
||
'title' => '周末的咖啡时光 ☕',
|
||
'slug' => 'weekend-coffee-time',
|
||
'excerpt' => '在繁忙的生活中,给自己一个慢下来的理由。一杯咖啡,一本书,享受属于自己的周末时光。',
|
||
'content' => '<p>周末的早晨,阳光透过窗帘洒进房间,我喜欢这样慵懒地醒来。</p><p>不急不慢地准备一杯手冲咖啡,看着咖啡粉在热水中绽放,香气渐渐弥漫整个房间。这大概就是生活中最简单的幸福吧。</p><h2>关于这家咖啡店</h2><p>最近发现了一家藏在巷子里的小店,装修简约却很有格调。老板是个很有趣的人,每次去都会聊上几句。</p><blockquote><p>「生活不止眼前的苟且,还有诗和远方。」</p></blockquote><p>希望每个人都能找到属于自己的小确幸。</p>',
|
||
'is_featured' => true,
|
||
],
|
||
[
|
||
'title' => '探索城市的隐藏角落 🏙️',
|
||
'slug' => 'explore-hidden-city',
|
||
'excerpt' => '在熟悉的城市中,总有一些角落等待被发现。这次我用一天的时间,探索了几个从未去过的地方。',
|
||
'content' => '<p>生活在一个城市久了,总觉得已经把每个角落都走遍了。但其实,只要换一个视角,就能发现很多之前忽略的美好。</p><h2>老城区的午后</h2><p>老城区的街道总有一种特别的气息,斑驳的墙面诉说着岁月的故事。</p><p>偶遇一家开了30年的老店,老板娘热情地介绍着店里的招牌。原来,最美的风景一直就在身边。</p><h3>推荐路线</h3><ul><li>早上:从老城区的早餐店开始</li><li>中午:漫步胡同,感受生活气息</li><li>下午:找一家安静的咖啡馆坐坐</li></ul>',
|
||
'is_featured' => true,
|
||
],
|
||
[
|
||
'title' => '今日穿搭分享 | 极简风 👗',
|
||
'slug' => 'outfit-minimal-style',
|
||
'excerpt' => '分享一套日常通勤穿搭,舒适又不失精致。极简主义的魅力在于less is more。',
|
||
'content' => '<p>今天分享一套我最近很喜欢的穿搭,适合日常通勤,也适合周末约会。</p><h2>单品分享</h2><p>上衣选择了一件基础款的白色T恤,百搭又显气质。下装是一条高腰阔腿裤,拉长腿部线条。</p><p>配饰上我选择了简约的金色项链和耳环,点缀整体造型。</p><blockquote><p>「穿衣服要舒服,更要有自己的风格。」</p></blockquote><h3>搭配tips</h3><ul><li>基础款单品要注重质感</li><li>配色尽量控制在三种以内</li><li>配饰是点睛之笔</li></ul>',
|
||
'is_featured' => true,
|
||
],
|
||
[
|
||
'title' => '居家改造计划 | 打造温馨小窝 🏠',
|
||
'slug' => 'home-renovation-plan',
|
||
'excerpt' => '一直想改造一下自己的房间,终于动手了!分享一些居家改造的心得。',
|
||
'content' => '<p>租房多年,一直觉得家只是一个睡觉的地方。但最近开始意识到,家应该是一个让人放松的空间。</p><h2>改造思路</h2><p>首先是整理收纳,把不需要的东西都断舍离。然后添置了一些温馨的装饰品,比如香薰蜡烛、绿植、温暖的灯光。</p><p>改造后的房间真的让人心情好很多!</p><h3>好物推荐</h3><ul><li>无火香薰:提升空间氛围</li><li>暖光台灯:营造温馨感</li><li>收纳盒:保持整洁</li></ul>',
|
||
'is_featured' => false,
|
||
],
|
||
[
|
||
'title' => '读书笔记 | 《被讨厌的勇气》📚',
|
||
'slug' => 'reading-notes-courage',
|
||
'excerpt' => '最近读完了这本书,对阿德勒心理学有了新的认识。分享一些读后感。',
|
||
'content' => '<p>这本书用对话的形式,讲述了阿德勒心理学的核心观点。读完后,对很多事情有了新的看法。</p><h2>核心观点</h2><p>书中提到,我们的人生是由自己选择的,不应该被过去所束缚。每个人都有改变的能力。</p><blockquote><p>「人生没有意义,生命的意义是你自己赋予的。」</p></blockquote><h3>读后感</h3><p>读完这本书,最大的收获是学会了「课题分离」。每个人都应该专注于自己的课题,不要过多干涉别人的课题。</p>',
|
||
'is_featured' => false,
|
||
],
|
||
[
|
||
'title' => '美食日记 | 自制抹茶提拉米苏 🍰',
|
||
'slug' => 'food-matcha-tiramisu',
|
||
'excerpt' => '周末尝试做了抹茶提拉米苏,没想到意外的成功!分享食谱和制作过程。',
|
||
'content' => '<p>一直很喜欢抹茶口味的甜品,这次尝试自己动手做提拉米苏,效果超出预期!</p><h2>食材准备</h2><p>马斯卡彭芝士、抹茶粉、手指饼干、鲜奶油、蛋黄、糖粉等。</p><h2>制作步骤</h2><p>1. 蛋黄加糖隔水加热打发<br>2. 马斯卡彭芝士打软后混合蛋黄糊<br>3. 手指饼干蘸抹茶液铺底<br>4. 铺上芝士糊,重复几层<br>5. 冷藏4小时以上</p><p>自己做的甜品就是不一样,满满的成就感!</p>',
|
||
'is_featured' => false,
|
||
],
|
||
[
|
||
'title' => '春日踏青 | 感受大自然的美好 🌸',
|
||
'slug' => 'spring-outing-nature',
|
||
'excerpt' => '趁着春光正好,来一场说走就走的踏青之旅。花海、蓝天、微风,一切都刚刚好。',
|
||
'content' => '<p>等了一个冬天,终于迎来了春暖花开的季节。约上三五好友,去郊外感受大自然的魅力。</p><h2>目的地</h2><p>这次选择了城郊的一个花海公园,樱花和油菜花开得正盛。</p><p>阳光洒在身上,暖暖的,让人忍不住放慢脚步,好好感受这一刻的美好。</p><blockquote><p>「春天就是要出去走走,感受生命的力量。」</p></blockquote><h3>拍照tips</h3><ul><li>选择早上或傍晚的光线</li><li>穿浅色衣服更出片</li><li>善用前景构图</li></ul>',
|
||
'is_featured' => false,
|
||
],
|
||
[
|
||
'title' => '健身打卡 | 坚持的力量 💪',
|
||
'slug' => 'fitness-check-in',
|
||
'excerpt' => '健身一个月的变化分享。虽然过程很辛苦,但看到自己的进步,一切都值得。',
|
||
'content' => '<p>一个月前开始认真健身,从最开始的不适应到现在慢慢形成习惯,收获了很多。</p><h2>我的训练计划</h2><p>每周训练4-5次,有氧和力量交替进行。刚开始的时候真的很累,但坚持下来后,身体素质明显提高了。</p><h3>一些建议</h3><ul><li>制定合理的计划,循序渐进</li><li>饮食要配合,保证蛋白质摄入</li><li>休息同样重要,不要过度训练</li><li>找到自己喜欢的运动方式</li></ul><p>希望这篇分享能给想开始健身的朋友一些动力!</p>',
|
||
'is_featured' => false,
|
||
],
|
||
];
|
||
|
||
foreach ($posts as $index => $postData) {
|
||
$post = Post::firstOrCreate(
|
||
['slug' => $postData['slug']],
|
||
array_merge($postData, [
|
||
'user_id' => $admin->id,
|
||
'category_id' => $allCategories->random()->id,
|
||
'status' => 'published',
|
||
'published_at' => now()->subDays(rand(1, 30)),
|
||
'views_count' => rand(100, 3000),
|
||
'likes_count' => rand(10, 300),
|
||
])
|
||
);
|
||
|
||
// 随机关联2-4个标签
|
||
$post->tags()->sync($allTags->random(rand(2, 4))->pluck('id'));
|
||
}
|
||
|
||
$this->command->info('Blog seeder completed successfully!');
|
||
$this->command->info('Admin login: admin@example.com / password');
|
||
}
|
||
}
|
||
|