调用Laravel 8中未定义的函数factory()



我有两个工厂在这里:

CourseFactory.php

protected $model = Course::class;
public function definition()
{
return [
'title' => $this->faker->sentence(),
'body' => $this->faker->paragraph(5),
'price' => $this->faker->numberBetween(1000,10000),
'image' => $this->faker->imageUrl(),
];
}

EpicodeFactory.php:

protected $model = Episode::class;
public function definition()
{
return [
'title' => $this->faker->sentence(),
'body' => $this->faker->paragraph(5),
'videoUrl' => 'https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4',
];
}

然后在DatabaseSeeder.php上:

public function run()
{
$user = factory(AppModelsUser::class)->create();
factory(AppModelsCourse::class , 5)->create(['user_id' => $user->id ])->each(function ($course) {
factory(AppModelsEpisode::class, rand(6 , 20))->make()->each(function ($episode , $key) use ($course){
$episode->number = $key +1;
$course->episodes()->save($episode);
});
});
}

但当我想运行php artisan db:seed时,我会收到以下错误:

调用未定义的函数Database\Siders\factory((

在C: \Users\POUYA\Desktop_MOSX\lavel-api\database\seeders\DatabaseSeeder.php

错误消息指的是这一行:

$user = factory(AppModelsUser::class)->create();

这意味着我没有以正确的方式使用factory

那么,如何以正确的方式调用factory呢?

我真的很感激你们的任何想法或建议。。。

提前谢谢。

UserFactory.php:

protected $model = User::class;
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
}

在laravel 8中,调用工厂的方式发生了变化。请查看更改日志

以下是现在称之为的方法

因此,在您的情况下,将您的代码更改为:

public function run()
{
$user = AppModelsUser::factory()->create();
AppModelsCourse::factory()->count(5)->create(['user_id' => $user->id ])->each(function ($course) {
AppModelsEpisode::factory()->count(rand(6 , 20))->make()->each(function ($episode , $key) use ($course){
$episode->number = $key +1;
$course->episodes()->save($episode);
});
});
}

最新更新