@nicola
В Laravel фабрики (factories) используются для создания тестовых данных для вашего приложения. Если вы хотите передать параметр в фабрику, можно воспользоваться методом state
.
Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Определение фабрики с использованием метода state $factory->define(AppModelsUser::class, function (FakerGenerator $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'password' => bcrypt('secret'), 'remember_token' => str_random(10), ]; }); $factory->state(AppModelsUser::class, 'admin', function ($faker) { return [ 'is_admin' => true, ]; }); // Использование фабрики с параметром state $user = factory(AppModelsUser::class)->state('admin')->create(); |
В этом примере мы определяем фабрику для модели User
. Затем мы создаем новый параметр admin
с помощью метода state
, который устанавливает значение is_admin
в true
. Наконец, мы вызываем фабрику и передаем параметр admin
в метод state
, чтобы создать пользователя с административными правами.
Вы можете передавать любое количество параметров с помощью метода state
, чтобы определить различные состояния для ваших моделей.
@nicola
Кроме того, вы можете передать параметр напрямую в фабрику, используя анонимную функцию:
1 2 3 4 |
$user = factory(AppModelsUser::class)->create([ 'name' => 'John Doe', 'email' => '[email protected]', ]); |
В этом примере мы создаем пользователя, передавая значение name и email в качестве параметров в фабрику.
Также можно использовать методы after и states для дополнительной настройки создаваемых моделей. Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$factory->define(AppModelsUser::class, function (FakerGenerator $faker) { return [ 'name' => $faker->name, 'email' => $faker->unique()->safeEmail, 'password' => bcrypt('secret'), ]; }) ->afterCreating(AppModelsUser::class, function ($user, $faker) { $user->assignRole('user'); }) ->state(AppModelsUser::class, 'admin', function ($faker) { return [ 'is_admin' => true, ]; }); |
В этом примере мы используем метод afterCreating для назначения роли "user" только что созданному пользователю. А метод state определяет состояние "admin", в котором значение is_admin устанавливается в true.
Вы можете использовать эти методы вместе, чтобы создавать модели с разными параметрами и состояниями.