错误:";试图获得财产'id'非对象的";Laravel8上有外键



我想写一个正确的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,

相关内容

最新更新