首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用Laravel 8中未定义的函数工厂()

调用Laravel 8中未定义的函数工厂()
EN

Stack Overflow用户
提问于 2021-05-16 05:09:12
回答 1查看 2.1K关注 0票数 1

我这里有两家工厂:

CourseFactory.php

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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),
        ];
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 03:29:37

在laravel 8中,呼叫工厂的方式发生了改变。请看变化量g

这里有一种叫现在的方法

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

代码语言:javascript
复制
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);
            });
        });
    }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67553360

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档