РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1237 of 1392 menu

Метод definition

Метод definition применяется в классе фабрики и определяет структуру данных для создания моделей. Этот метод должен возвращать массив, где ключи - имена полей, а значения - их содержимое. Чаще всего значения задаются через помощник fake, предоставляемый библиотекой Faker, для генерации реалистичных тестовых данных.

Синтаксис

<?php class ModelFactory extends Factory { public function definition(): array { return [ 'column_1' => 'value_1', 'column_2' => 'value_2', ]; } } ?>

Пример

Давайте определим фабрику для модели Article с полями title, content и is_published:

<?php namespace DatabaseFactories; use AppModelsArticle; use IlluminateDatabaseEloquentFactoriesFactory; class ArticleFactory extends Factory { protected $model = Article::class; public function definition(): array { return [ 'title' => $this->faker->sentence(5), 'content' => $this->faker->paragraph(3), 'is_published' => $this->faker->boolean(), ]; } } ?>

Теперь при использовании фабрики будут создаваться записи со случайными значениями:

<?php use AppModelsArticle; use DatabaseFactoriesArticleFactory; $article = Article::factory()->create(); echo $article->title; echo $article->content; echo $article->is_published; ?>

Результат выполнения кода:

"Voluptatem amet magnam id ipsa laboriosam." "Qui eum et laborum. Non ea voluptatibus atque aliquid rerum dolor. Maxime in voluptatem quas qui quaerat id expedita." "1"

Пример

Определим фабрику для модели User с полями name, email и password:

<?php namespace DatabaseFactories; use AppModelsUser; use IlluminateDatabaseEloquentFactoriesFactory; use IlluminateSupportFacadesHash; class UserFactory extends Factory { protected $model = User::class; public function definition(): array { return [ 'name' => $this->faker->name(), 'email' => $this->faker->unique()->safeEmail(), 'password' => Hash::make('password'), ]; } } ?>

При создании нескольких пользователей все они будут иметь уникальные email-адреса:

<?php use AppModelsUser; $users = User::factory()->count(3)->create(); foreach ($users as $user) { echo $user->email; } ?>

Результат выполнения кода:

"john.doe@example.com" "jane.smith@example.net" "bob.johnson@example.org"

Смотрите также

  • метод create,
    который создаёт и сохраняет запись в базе данных
  • метод make,
    который создаёт запись без сохранения в базу
  • метод state,
    который переопределяет поля в фабрике для конкретного сценария
  • метод sequence,
    который позволяет задавать разные значения для каждой создаваемой записи
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить