Laravel 8 我在播种数据播种时遇到问题:调用未定义的方法 ::factory()

Laravel 8 I got problem with the seeding data Seeding: Call to undefined method ::factory()

商品工厂

    public function definition()
{
    return [
        'user_id'=>rand(1,100),
        'title'=>$this->faker->text(30),
        'body'=>$this->faker->text(30),

    ];
}

} 商品型号

        Schema::create('goods', function (Blueprint $table) {
        $table->id();
        $table->integer('user_id');
        $table->text('title');
        $table->text('body');
        $table->timestamps();

GoodsTableSeeder

public function run()
{
 DB::table('goods')->factory()->times(50)->create();
}

Database\Seeders\GoodsTableSeeder 调用未定义的方法 Illuminate\Database\Query\Builder::factory()

这里有一些让工厂在 laravel 8.x

中运作的快速指南
  1. 在你的 Goods Factory 中声明 $model 属性 Class:

protected $model = Goods::class;

  1. 在商品模型中使用 HasFactory 特征 class

use Illuminate\Database\Eloquent\Factories\HasFactory;

  1. 在模型上使用 factory() 方法 class 生成模型实例或为数据库播种:

Good::factory()->count(15)->create();

  1. 如果您使用播种机,请确保将目录 database/seeds 重命名为 database/seeders 并更改自动加载,如下所示 composer.json
"autoload": {
    "psr-4": {
        "App\": "app/",
        "Database\Factories\": "database/factories/",
        "Database\Seeders\": "database/seeders/"
    }
},

Laravel 8.x改变了工厂的使用方式,更多细节可以阅读下面的文档: https://laravel.com/docs/8.x/upgrade#model-factories https://laravel.com/docs/8.x/database-testing#defining-model-factories

以上内容希望对您有所帮助,有什么不明白的地方欢迎追问