我想写一个正确的PostFactory,用Laravel8 为我的DB种子
我遵循Laravel8上的文档,使我的工厂为种子我的数据库
https://laravel.com/docs/8.x/seeding#using-模型工厂
我有三种型号:
- Category.php
- Post.php
- 用户.php
当我使用以下命令时,我可以为我的DB播种:
php artisan db:seed --class=UserSeeder
php artisan db:seed --class=CategorySeeder
但我不能播种:
php artisan db:seed --class=PostSeeder
php artisan db:seed
,用于用一个命令种子所有DB
我的PostSeeder:
class PostSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
AppModelsPost::factory(50)->create();
}
}
我的PostFactory:
public function definition()
{
return [
'title' => $this->faker->sentence(rand(5, 10)),
'content' => $this->faker->sentences(50, true),
'image' => 'https://via.placeholder.com/350/65' . rand(1, 100),
'created_at' => now(),
'updated_at' => now(),
'category_id' => Category::inRandomOrder()->first()->id,
'users_id' => User::inRandomOrder()->first()->id,
];
}
我的PostFactory不想拿走我的种子
我遇到这个错误:
PS C:UsersChrisDesktopLaravel_ProjectsBlog> php artisan db:seed
ErrorException
Trying to get property 'id' of non-object
at C:UsersChrisDesktopLaravel_ProjectsBlogdatabasefactories
28▕ 'content' => $this->faker->sentences(50, true),
29▕ 'image' => 'https://via.placeholder.com/350/65'
30▕ 'created_at' => now(),
31▕ 'updated_at' => now(),
1 C:UsersChrisDesktopLaravel_ProjectsBlogdatabasefactoriesPostFactory.php:32
IlluminateFoundationBootstrapHandleExceptions::handleError("Trying to get property 'id' of non-object", "C:UsersChrisDesktopLaravel_ProjectsBlogdatabasefactoriesPostFactory.php", [])
2 C:UsersChrisDesktopLaravel_ProjectsBlogvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoriesFactory.php:424
DatabaseFactoriesPostFactory::definition()
我的问题是我的2把外键:我看到另一篇帖子有这个错误,但我不能用dd((进行调试;
我不知道如何为我的2个外键写我的定义
我试着检查了一下我的id,但结果很糟糕。
在我的users_table和categorories_table之后和之前播种posts_table是一样的。
我试了试关于这个主题的不同帖子,但没有成功。。感谢您的帮助。
使用随机id创建随机id以及创建记录的数量,以便在种子中定义。这两行添加到后工厂中。我希望能帮助你。
'category_id' => Category::all()->random()->id,
'users_id' => User::all()->random()->id,