我是拉丁人,所以我的英语不是很好看。
我正在尝试使用Laravel工厂类来populate我的MySQL数据库,我在提供者和提供者用户之间有一个多形态的多对多关系。
$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
模型之间的关系,并将User.php
模型的password
字段设置到model类的$hidden
数组中。ProviderFactory.php
和LocationFactory.php
工作正常,但UserFactory.php
不正常。当我尝试为数据库表设定种子时,出现General error: 1364 Field 'password' doesn't have a default value
错误,但当我从User.php
模型的$hidden
数组中删除password
字段时,此错误消失,然后一切按预期工作。
我希望有人能帮助我获得这些信息。
1条答案
按热度按时间unftdfkk1#
既然你是绕过工厂,你是依靠可填充的警卫,我会假设密码是不可填充的。
我假设将代码更改为使用工厂,而不是使用保存,因为您没有创建将有助于解决这个问题。