jeudi 5 mars 2020

Laravel Factories - Create or Make dynamic

I have simple question.

How could I write a Factory that let me defines relationships that use make() or create() depending on original call make() or create()?

It is my use case:

I have a simple factory

/** @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',
    ];
});

My problem is with that role_id. When using factory(Role::class), it will create a Role always! Writing in Database...

In my tests, when I write factory(User::class)->create(); It will create an User and Role, thats ok!

But if I write factory(User::class)->make(); It will still create a Role... I wont write in Database a Role when using make(), in that case, I just want a simple role_id => 0.

How could I achieve that?

Thanks!

Aucun commentaire:

Enregistrer un commentaire