我有两个工厂在这里:
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);
});
});
}