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

Метод afterMaking

Метод afterMaking класса Factory применяется для регистрации обратного вызова, который будет выполнен после того, как фабрика создаст экземпляр модели с помощью метода make. В отличие от afterCreating, данный метод срабатывает до сохранения модели в базу данных. Обратный вызов получает созданный экземпляр модели в качестве аргумента, что позволяет модифицировать его атрибуты или выполнять дополнительные действия.

Синтаксис

<?php Factory::afterMaking($callback); ?>

Пример

Давайте создадим фабрику для модели User и зарегистрируем обратный вызов, который преобразует имя пользователя в верхний регистр после создания экземпляра:

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

Теперь при создании экземпляра с помощью метода make имя пользователя будет автоматически преобразовано в верхний регистр:

<?php use AppModelsUser; use DatabaseFactoriesUserFactory; $user = UserFactory::new()->make(); echo $user->name; ?>

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

"JOHN DOE"

Пример

Давайте используем afterMaking для установки значения поля slug на основе поля title перед сохранением модели:

<?php namespace DatabaseFactories; use AppModelsArticle; use IlluminateDatabaseEloquentFactoriesFactory; use IlluminateSupportStr; class ArticleFactory extends Factory { protected $model = Article::class; public function definition() { return [ 'title' => $this->faker->sentence, 'content' => $this->faker->paragraphs(3, true), 'status' => 'draft', 'slug' => null, ]; } public function configure() { return $this->afterMaking(function (Article $article) { if (is_null($article->slug)) { $article->slug = Str::slug($article->title); } }); } } ?>

При создании экземпляра статьи с помощью метода make, поле slug будет автоматически заполнено:

<?php use AppModelsArticle; use DatabaseFactoriesArticleFactory; $article = ArticleFactory::new()->make(); echo $article->slug; ?>

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

"laravel-eloquent-query-builder"

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

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