How to add unique email in Laravel Faker

30 Aug 2019 . Tips and Tricks . 364 views

Imagine that, you have a UserFactory in laravel project where the email address is unique. In general, you can easily add generate an email with faker like this way-

<?php

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'username' => $faker->name,
        'email' => $faker->email,
        'remember_token' => str_random(60),
        'password' => $faker->sha1, // secret
        'remember_token' => str_random(10)
    ];
});

But this line of code 'email' => $faker->email will generate an email for you that doesn't make sure whether it is unique or not. In that case, your testing can be a failure for that.

So, to address this issue, you can use unique() method. It will be like this-

'email' => $faker->unique()->email

The overall code will be like this-


<?php

use Faker\Generator as Faker;

$factory->define(App\User::class, function (Faker $faker) {
    return [
        'username' => $faker->name,
        'email' => $faker->unique()->email,
        'remember_token' => str_random(60),
        'password' => $faker->sha1, // secret
        'remember_token' => str_random(10)
    ];
});

Hope this small tip will be helpful for you.

Thank you.