将播种数据保存到 Laravel 中的数据库
Saving seeding data to database in Laravel
我正在参加 Laravel 课程。课程本来是laravel 8,结果是30/70laravel 8,laravel 5已经过时了,慢慢更新。问题是将播种数据保存到数据库 (MySQL)。我可以在代码中将 Users 保存到数据库,但不能保存 Blogposts 或评论。博客 post 应该使用所有用户表中的随机用户 ID 进行保存,以便创建 post 的特定用户能够编辑他创建的 post,而不是其他。此外,评论具有相同的故事,但评论被随机分配给 posts。以前曾尝试使用 PHP artisan tinker 将 posts 保存到数据库。
class DatabaseSeeder extends Seeder
{
public function run()
{
$users = User::factory()->count(20)->create();
dd($users->count());
$posts = BlogPost::factory()->count(50)->make()
->each(function ($post) use ($users) {
$post->user()->associate($users->random())->save();
});
$comments = Comment::factory()->count(150)->make()
->each(function ($comment) use ($posts) {
$comment->blog_post_id = $posts->random()->id;
});
}
}
进行迁移时,未显示任何错误。对于迁移,我们使用以下内容。
php artisan migrate:refresh --seed
嗯,dd()
的意思就是dump and die
。因此,您将在用户工厂之后停止种子执行。
只需删除 dd()
并且种子应该按预期执行
<?php
namespace Database\Seeders;
use App\Models\User;
use App\Models\BlogPost;
use App\Models\Comment;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$users = User::factory()->count(20)->create();
// dd($users->count()); <-- This stops the seed execution
$posts = BlogPost::factory()->count(50)->make()->each(function($post) use ($users) {
$post->user()->associate($users->random())->save();
});
$comments = Comment::factory()->count(150)->make()->each(function ($comment) use ($posts){
$comment->blog_post_id = $posts->random()->id;
});
}
}
我正在参加 Laravel 课程。课程本来是laravel 8,结果是30/70laravel 8,laravel 5已经过时了,慢慢更新。问题是将播种数据保存到数据库 (MySQL)。我可以在代码中将 Users 保存到数据库,但不能保存 Blogposts 或评论。博客 post 应该使用所有用户表中的随机用户 ID 进行保存,以便创建 post 的特定用户能够编辑他创建的 post,而不是其他。此外,评论具有相同的故事,但评论被随机分配给 posts。以前曾尝试使用 PHP artisan tinker 将 posts 保存到数据库。
class DatabaseSeeder extends Seeder
{
public function run()
{
$users = User::factory()->count(20)->create();
dd($users->count());
$posts = BlogPost::factory()->count(50)->make()
->each(function ($post) use ($users) {
$post->user()->associate($users->random())->save();
});
$comments = Comment::factory()->count(150)->make()
->each(function ($comment) use ($posts) {
$comment->blog_post_id = $posts->random()->id;
});
}
}
进行迁移时,未显示任何错误。对于迁移,我们使用以下内容。
php artisan migrate:refresh --seed
嗯,dd()
的意思就是dump and die
。因此,您将在用户工厂之后停止种子执行。
只需删除 dd()
并且种子应该按预期执行
<?php
namespace Database\Seeders;
use App\Models\User;
use App\Models\BlogPost;
use App\Models\Comment;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
public function run()
{
$users = User::factory()->count(20)->create();
// dd($users->count()); <-- This stops the seed execution
$posts = BlogPost::factory()->count(50)->make()->each(function($post) use ($users) {
$post->user()->associate($users->random())->save();
});
$comments = Comment::factory()->count(150)->make()->each(function ($comment) use ($posts){
$comment->blog_post_id = $posts->random()->id;
});
}
}