我是拉丁人所以我的英语不是很好看。
我正在尝试使用 Laravel 工厂类来填充我的 MySQL 数据库,我在提供者和提供者用户之间有一个多态的多对多关系。这是我的
UserFactory.php
:
$factory->define(User::class, function (Faker $faker) {
$now = new DateTime("now", new DateTimeZone("America/Bogota"));
return [
"name" => $faker->name(),
"email" => $faker->unique()->safeEmail(),
"password" => Hash::make("12345678"),
"created_at" => $now->format("Y-m-d H:i:s"),
"updated_at" => $now->format("Y-m-d H:i:s")
];
});
$factory->state(User::class, "provider-user", function(){
return ["role_id" => config("static.role_ids.provider-user")];
});
这是我的
ProviderSeeder.php
:
public function run()
{
factory(Provider::class, 10)
->state("natural")
->create()
->each(function($provider){
$provider->users()->createMany(
factory(User::class, rand(3, 6))
->states("provider-user")
->make()
->toArray()
);
$provider->location()->save(
factory(Location::class)
->make(["owner_type" => "App\\Models\\Provider"])
);
});
}
我以标准方式定义了
Provider.php
和User.php
模型之间的关系。我将 password
模型的 User.php
字段设置到模型类的 $hidden
数组中。
ProviderFactory.php
和 LocationFactory.php
工作正常但 UserFactory.php
没有。当我尝试为我的数据库表设置种子时,我得到一个 General error: 1364 Field 'password' doesn't have a default value
但是当我从 password
模型的 $hidden
数组中删除 User.php
字段时,这个错误消失了,然后一切都按预期工作。
我希望有人能帮我提供这些信息。