laravel 工厂无法填充密码字段

zy1mlcev  于 2023-03-13  发布在  其他
关注(0)|答案(1)|浏览(142)

我是拉丁人,所以我的英语不是很好看。
我正在尝试使用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.phpUser.php模型之间的关系,并将User.php模型的password字段设置到model类的$hidden数组中。
ProviderFactory.phpLocationFactory.php工作正常,但UserFactory.php不正常。当我尝试为数据库表设定种子时,出现General error: 1364 Field 'password' doesn't have a default value错误,但当我从User.php模型的$hidden数组中删除password字段时,此错误消失,然后一切按预期工作。
我希望有人能帮助我获得这些信息。

unftdfkk

unftdfkk1#

既然你是绕过工厂,你是依靠可填充的警卫,我会假设密码是不可填充的。
我假设将代码更改为使用工厂,而不是使用保存,因为您没有创建将有助于解决这个问题。

$provider->users()->saveMany(
    factory(User::class, rand(3, 6))
        ->states("provider-user")
        ->create()
    );

相关问题