Метод for
Метод for класса Factory применяется в тестах для создания коллекции моделей с заданным количеством экземпляров. Первым параметром передаётся количество создаваемых записей, вторым - опциональный callback для дополнительной настройки каждого экземпляра. Метод возвращает экземпляр фабрики, готовый к выполнению операций make или create.
Синтаксис
<?php
Model::factory()->for($count, $callback);
?>
Пример
Давайте создадим три статьи в тестовой базе данных:
<?php
use App\Models\Article;
use Tests\TestCase;
class ArticleTest extends TestCase
{
public function test_create_multiple_articles()
{
$articles = Article::factory()->for(3)->create();
foreach ($articles as $article) {
echo $article->title;
}
}
}
?>
Результат выполнения кода:
["article 1", "article 2", "article 3"]
Пример
Давайте создадим пять пользователей с различными именами через callback:
<?php
use App\Models\User;
use Tests\TestCase;
class UserTest extends TestCase
{
public function test_create_users_with_custom_names()
{
$users = User::factory()->for(5, function($user, $index) {
return $user->state(['name' => 'user ' . ($index + 1)]);
})->create();
foreach ($users as $user) {
echo $user->name;
}
}
}
?>
Результат выполнения кода:
["user 1", "user 2", "user 3", "user 4", "user 5"]
Пример
Давайте создадим десять категорий без сохранения в базу данных:
<?php
use App\Models\Category;
use Tests\TestCase;
class CategoryTest extends TestCase
{
public function test_make_categories()
{
$categories = Category::factory()->for(10)->make();
foreach ($categories as $category) {
echo $category->name;
}
}
}
?>
Результат выполнения кода:
["category 1", "category 2", "category 3", "category 4", "category 5", "category 6", "category 7", "category 8", "category 9", "category 10"]