Php laravel模型工厂替代默认状态

Php laravel模型工厂替代默认状态,php,laravel,factory,Php,Laravel,Factory,是否可以在不使用状态的情况下覆盖工厂的默认值 我使用一个工具从我的模型生成工厂,但我想修改一些属性。我知道我可以用 $factory->state(\App\User::class, 'moderator', function ... 但我希望这样做,而不依赖于在每次创建模型时指定状态。大概是 $factory->state(\App\User::class, 'default', function ... 例如,您在工厂中定义的是默认行为 $factory->define

是否可以在不使用状态的情况下覆盖工厂的默认值

我使用一个工具从我的模型生成工厂,但我想修改一些属性。我知道我可以用

$factory->state(\App\User::class, 'moderator', function ...
但我希望这样做,而不依赖于在每次创建模型时指定状态。大概是

$factory->state(\App\User::class, 'default', function ...

例如,您在工厂中定义的是默认行为

$factory->define(App\User::class, function(Faker $faker) {
    return [
        ...
        'name' => 'Jon Snow',
        ...
    ];
});
$factory->state(App\User::class, 'bad-guy', function (Faker $faker) {
    return [
        'name' => 'Night King'
    ]
};
$jonSnow = factory(App\User::class)->create();

$nightKing = factory(App\User::class)->states('bad-guy')->create(); 

$samTarly = factory(App\User::class)->create([
    'name' => 'Sam Tarly'
]);
例如,可以使用状态覆盖此默认行为

$factory->define(App\User::class, function(Faker $faker) {
    return [
        ...
        'name' => 'Jon Snow',
        ...
    ];
});
$factory->state(App\User::class, 'bad-guy', function (Faker $faker) {
    return [
        'name' => 'Night King'
    ]
};
$jonSnow = factory(App\User::class)->create();

$nightKing = factory(App\User::class)->states('bad-guy')->create(); 

$samTarly = factory(App\User::class)->create([
    'name' => 'Sam Tarly'
]);
最后一个可以执行的覆盖是,例如,当您想要创建该实例时

$factory->define(App\User::class, function(Faker $faker) {
    return [
        ...
        'name' => 'Jon Snow',
        ...
    ];
});
$factory->state(App\User::class, 'bad-guy', function (Faker $faker) {
    return [
        'name' => 'Night King'
    ]
};
$jonSnow = factory(App\User::class)->create();

$nightKing = factory(App\User::class)->states('bad-guy')->create(); 

$samTarly = factory(App\User::class)->create([
    'name' => 'Sam Tarly'
]);

你能详细说明一下吗?我提到的工具会生成第一种情况并覆盖现有的工厂定义。因此,我希望有一个默认应用的覆盖,以便可以自定义工具输出。也就是说,我希望在调用factory()->create()时默认应用一个状态,为什么不能覆盖工具生成的状态?如果你想覆盖它,你为什么要使用这个工具?该工具有配置覆盖的选项吗?我使用它根据数据库中的列类型自动设置默认值。不幸的是,我无法更改工具。但我找到了另一个解决办法。我现在有一个create函数,它自动应用名为default的状态。我使用这个函数,而不是直接调用工厂Valar Morghulis