我有一个简单的问题。
[如何编写一个工厂,让我根据原始调用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
。
我该如何实现?
谢谢!
您可以覆盖属性role_id:
factory(User::class)->make(['role_id' => 0]);