Error : "Trying to get property 'id' of non-object" with Foreign keys on Laravel8

Error : "Trying to get property 'id' of non-object" with Foreign keys on Laravel8

我想编写一个正确的 PostFactory 来为我的数据库添加 Laravel8

我按照 Laravel8 上的文档制作我的工厂作为我的数据库种子

https://laravel.com/docs/8.x/seeding#using-model-factories

我有 3 个模型:

当我使用这个命令时,我可以为我的数据库播种:

php artisan db:seed --class=UserSeeder
php artisan db:seed --class=CategorySeeder

但我不能播种:

php artisan db:seed --class=PostSeeder

php artisan db:seed 用一个命令为所有数据库播种

我的 PostSeeder :

class PostSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        \App\Models\Post::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:\Users\Chris\Desktop\Laravel_Projects\Blog> php artisan db:seed 

   ErrorException 

  Trying to get property 'id' of non-object

  at C:\Users\Chris\Desktop\Laravel_Projects\Blog\database\factories\
     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:\Users\Chris\Desktop\Laravel_Projects\Blog\database\factories\PostFactory.php:32
      Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Trying to get property 'id' of non-object", "C:\Users\Chris\Desktop\Laravel_Projects\Blog\database\factories\PostFactory.php", [])

  2   C:\Users\Chris\Desktop\Laravel_Projects\Blog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Factories\Factory.php:424        
      Database\Factories\PostFactory::definition()

我的问题出在我的 2 个外键上: 我看到另一个 post 出现此错误,但我无法使用 dd();

进行调试

我没有找到如何为我的 2 个外键编写定义

我尝试检查()我的 ID,但结果相同。

在我的 users_table 和 catergories_table 之后和之前播种我的 posts_table 是一样的。

我在该主题上尝试了不同的 posts,但没有成功。感谢任何帮助。

使用随机 ID 创建随机 ID 以及创建记录的数量,以便您在 seeder.this 两行中定义添加到 post 工厂。希望能帮到你

'category_id' => Category::all()->random()->id,
'users_id' => User::all()->random()->id,