Последовательности в фабриках Laravel
При count и одном массиве
все записи получают одинаковые
переопределенные поля. Чтобы у
каждой строки были свои значения,
используют sequence.
Пример - три пользователя с разными именами:
<?php
use App\Models\User;
User::factory()
->count(3)
->sequence(
['name' => 'Alex'],
['name' => 'Maria'],
['name' => 'Ivan'],
)
->create();
?>
Laravel по очереди применит каждый массив к следующей записи. Если записей больше, чем элементов в последовательности, цикл начнется сначала.
Последовательность можно задать через замыкание - удобно для уникальных email:
<?php
User::factory()
->count(5)
->sequence(fn ($sequence) => [
'email' => 'user' . $sequence->index . '@site.com',
])
->create();
?>
index начинается с нуля.
Получатся адреса
user0@site.com,
user1@site.com и так далее.
В definition для уникальных
полей по-прежнему полезен
fake()->unique() - как
в разделе unique Faker.
sequence нужен, когда
важны конкретные или предсказуемые
наборы данных.
Создайте 4 поста с разными
заголовками через sequence.
Сгенерируйте email вида
test1@site.com,
test2@site.com
через замыкание в sequence.