BigJobbies
BigJobbies

Reputation: 4033

Matching factory values in Laravel 7

Good Afternoon,

I'm trying to create a Laravel factory where 2 of the 'columns' have the same values every time its called and the rest of the factory can be random.

For instance, I have the following columns in my DB

name
email
phone_number
status_message
status_code

I currently have my factory as follows;

$factory->define(Brand::class, function (Faker $faker) {
    return [
        'name' => $faker->unique()->company,
        'email' => $faker->companyEmail,
        'phone_number' => $faker->phoneNumber
    ];
});

This part works perfectly, as it should, the problem is that each specific status message comes with an individual status code. Is there a way I could add an array of status messages with a status code and have the factory pick a set at random for that record?

The status code / messages are listed below in array format;

[
   '3e2s' => 'tangled web',
   '29d7' => 'get certified',
   '2r5g' => 'art of war',
]

I hope this makes sense. any help would be greatly appreciated.

Upvotes: 0

Views: 204

Answers (1)

Kamlesh Paul
Kamlesh Paul

Reputation: 12391

as i can understand u need to pick random from this array u mentioned in above

$factory->define(Brand::class, function (Faker $faker) {

    $data = [
        '3e2s' => 'tangled web',
        '29d7' => 'get certified',
        '2r5g' => 'art of war',
    ];

    $statusCode = array_rand($data);
    $statusMessage = $data[$statusCode];
    return [
        'name' => $faker->unique()->company,
        'email' => $faker->companyEmail,
        'phone_number' => $faker->phoneNumber,
        'status_message' => $statusMessage,
        'status_code' => $statusCode,

    ];
});

Upvotes: 1

Related Questions