我这里有两家工厂:
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(),
];
}和EpisodeFactory.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(App\Models\User::class)->create();
factory(\App\Models\Course::class , 5)->create(['user_id' => $user->id ])->each(function ($course) {
factory(\App\Models\Episode::class, rand(6 , 20))->make()->each(function ($episode , $key) use ($course){
$episode->number = $key +1;
$course->episodes()->save($episode);
});
});
}但是,当我想要运行php artisan db:seed时,我会得到以下错误:
对未定义函数数据库的调用\Seeders\factory() 在C:\Users\POUYA\Desktop_MACOSX\laravel-api\database\seeders\DatabaseSeeder.php
错误消息指的是这一行:
$user = factory(App\Models\User::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),
];
}发布于 2021-05-20 03:29:37
在laravel 8中,呼叫工厂的方式发生了改变。请看变化量g
这里有一种叫现在的方法
因此,在您的情况下,将代码更改为:
public function run()
{
$user = \App\Models\User::factory()->create();
\App\Models\Course::factory()->count(5)->create(['user_id' => $user->id ])->each(function ($course) {
\App\Models\Episode::factory()->count(rand(6 , 20))->make()->each(function ($episode , $key) use ($course){
$episode->number = $key +1;
$course->episodes()->save($episode);
});
});
}https://stackoverflow.com/questions/67553360
复制相似问题