Уникальные значения через Faker в Laravel
При цикле из многих пользователей
fake()->email() может
повториться. Если колонка
уникальна, база вернёт ошибку.
Модификатор unique
запоминает уже выданные значения
и не повторяет их в рамках
одного запуска:
<?php
namespace App\Http\Controllers;
class UserController extends Controller
{
public function index()
{
dump(fake()->unique()->email());
dump(fake()->unique()->email());
dump(fake()->unique()->email());
}
}
?>
unique ставят перед
методом - цепочкой. В сидере
с циклом:
<?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 < 5; $i++) {
DB::table('users')->insert([
'name' => fake()->name(),
'email' => fake()->unique()->email(),
]);
}
}
}
?>
Уникальность действует до конца
текущего сида. Новый
db:seed начинает счёт
заново. Выполним:
php artisan db:seed
Сгенерируйте 5
unique()->email()
через dump.
В сидере вставьте 5
юзеров с
unique()->email().