Laravel工厂-动态创建或创建

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

我有一个简单的问题。

[如何编写一个工厂,让我根据原始调用make()create()定义使用make()create()的关系?

这是我的用例:

我有一个简单的工厂

/** @var $factory Illuminate\Database\Eloquent\Factory */
$factory->define(App\User::class, function (Faker $faker) {
    return [
        'role_id' => factory(Role::class),
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => 'secret',
    ];
});

我的问题是这个role_id。使用factory(Role::class)时,它将始终创建一个角色!用数据库写...

在我的测试中,当我编写factory(User::class)->create();时,它将创建一个用户和角色,没关系!

但是如果我写factory(User::class)->make();仍会创建一个角色...在使用make()时我不会在数据库中写一个角色,在那种情况下,我只想要一个简单的role_id => 0

我该如何实现?

谢谢!

database laravel testing factory relation
1个回答
0
投票

您可以覆盖属性role_id

factory(User::class)->make(['role_id' => 0]);
© www.soinside.com 2019 - 2024. All rights reserved.