填充密码字段在工厂不起作用

问题描述 投票:0回答:0

我是拉丁人所以我的英语不是很好看。

我正在尝试使用 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
字段时,这个错误消失了,然后一切都按预期工作。

我希望有人能帮我提供这些信息。

mysql laravel factory laravel-6
© www.soinside.com 2019 - 2024. All rights reserved.