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 个模型:
- Category.php
- Post.php
- User.php
当我使用这个命令时,我可以为我的数据库播种:
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,
我想编写一个正确的 PostFactory 来为我的数据库添加 Laravel8
我按照 Laravel8 上的文档制作我的工厂作为我的数据库种子
https://laravel.com/docs/8.x/seeding#using-model-factories
我有 3 个模型:
- Category.php
- Post.php
- User.php
当我使用这个命令时,我可以为我的数据库播种:
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,