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
中运作的快速指南
- 在你的 Goods Factory 中声明 $model 属性 Class:
protected $model = Goods::class;
- 在商品模型中使用
HasFactory
特征 class
use Illuminate\Database\Eloquent\Factories\HasFactory;
- 在模型上使用 factory() 方法 class 生成模型实例或为数据库播种:
Good::factory()->count(15)->create();
- 如果您使用播种机,请确保将目录
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
以上内容希望对您有所帮助,有什么不明白的地方欢迎追问
商品工厂
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
中运作的快速指南- 在你的 Goods Factory 中声明 $model 属性 Class:
protected $model = Goods::class;
- 在商品模型中使用
HasFactory
特征 class
use Illuminate\Database\Eloquent\Factories\HasFactory;
- 在模型上使用 factory() 方法 class 生成模型实例或为数据库播种:
Good::factory()->count(15)->create();
- 如果您使用播种机,请确保将目录
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
以上内容希望对您有所帮助,有什么不明白的地方欢迎追问