Уникальный email через Faker в сидере Laravel
Для таблицы users
с уникальным email
в цикле объединяют два приёма:
safeEmail - тестовый домен,
unique - без повторов
в одном сиде.
Посмотрим цепочку:
<?php
namespace App\Http\Controllers;
class UserController extends Controller
{
public function index()
{
dump(fake()->unique()->safeEmail());
dump(fake()->unique()->safeEmail());
}
}
?>
Полный сидер с циклом:
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;
class DatabaseSeeder extends Seeder
{
public function run(): void
{
for ($i = 0; $i < 10; $i++) {
DB::table('users')->insert([
'name' => fake()->name(),
'email' => fake()->unique()->safeEmail(),
]);
}
}
}
?>
Десять пользователей получат разные адреса на тестовых доменах. Выполним команду:
php artisan db:seed
Заполните 20 юзеров
с unique()->safeEmail().
Запустите сид дважды подряд. Что произойдёт с email, если колонка уникальна?