@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.
Вы можете использовать эти методы вместе, чтобы создавать модели с разными параметрами и состояниями.