Як генерувати тестові або імітаційні дані за допомогою фабрик Laravel
Laravel Framework має багато функцій, які полегшують і пришвидшують веб-розробку.
Однією з ключових особливостей Laravel є можливість використовувати фабрики для створення тестових даних навіть за допомогою фальсифікаторів Laravel.
У цій статті ми побачимо, як використовувати завод з Laravel і як заповнити БД i Факер di Laravel.
Приблизний час читання: 6 хвилин
Що таке фабрики Laravel
Una завод in Laravel це клас, який дозволяє нам генерувати тестові дані. Фабрики надають можливість створювати моделі з фіктивними даними за допомогою Faker Laravel, тож ви можете тестувати свою програму без потреби в реальних даних. Це особливо корисно, коли ви розробляєте свою програму і вам потрібно протестувати різні сценарії.
Як створити фабрику
Щоб створити a завод in Laravel, нам потрібно запустити команду Artisan make:factory
. Ця команда створює новий клас завод в каталозі database/factories
.
Ось приклад того, як його створити завод для моделі User
:
php artisan make:factory UserFactory --model=User
Ця команда створить клас UserFactory
в каталозі database/factories
. Варіант --model=User
повідомляє Laravel, що фабрика призначена для моделі User
.
Як створити модель Factory
Як тільки ви створите один завод, вам потрібно створити модель Factory. Ви можете зробити це, визначивши закриття в методі define
класу завод.
Ось приклад того, як визначити a завод для моделі User
:
use App\Models\User;
use Illuminate\Database\Eloquent\Factories\Factory;
class UserFactory extends Factory
{
protected $model = User::class;
public function definition()
{
return [
'name' => $this->faker->name(),
'email' => $this->faker->unique()->safeEmail(),
'password' => bcrypt('password'),
];
}
}
У цьому прикладі ми визначаємо фабрику для моделі User
. Метод definition
повертає масив, що містить атрибути моделі User
. У цьому випадку ми генеруємо випадкове ім’я та адресу електронної пошти за допомогою бібліотеки Faker і встановлюємо пароль на «password».
Як використовувати фабрику
Після визначення a завод, ви можете використовувати його для створення тестових даних. Щоб створити єдиний екземпляр моделі, ви можете використовувати методи make
o create
заводу.
Ось приклад створення єдиного шаблону User
використовуючи метод create
:
$user = Користувач::factory()->create();
Цей код створює нову модель User
con dati casuali e lo salva nel база даних.
Ви також можете скористатися методом make
per creare un’istanza del modello senza salvarlo nel база даних:
$user = Користувач::factory()->make();
Цей код створює нову модель User
con dati casuali ma non lo salva nel база даних.
Якщо ви хочете створити кілька екземплярів моделі, ви можете скористатися цим методом count
:
$users = User::factory()->count(10)->create();
Цей код створює 10 нових моделей User
con dati casuali e li salva nel база даних.
Факер Laravel
Що таке Laravel Faker? Laravel Faker — це бібліотека для створення PHP неправдиві дані per te. Se hai bisogno di avviare il tuo база даних, creare documenti XML di bell’aspetto, completare la tua perseveranza per sottoporlo a stress test o rendere anonimi i dati presi da un servizio di produzione, allora devi usare i Laravel Faker.
Як користуватися Fakers
Деякі основи:
- Підроблені налаштування мови за замовчуванням : За замовчуванням Faker використовує налаштування мови
en_US
. Ви можете змінити його, щоб генерувати дані на різних мовах і форматах. Наприклад, щоб використовувати французьку мову, ви повинні створити новий екземпляр Faker таким чином:$faker = Faker\Factory::create('fr_FR');
- Генерація неправдивих даних : Ви можете генерувати підроблені дані, викликаючи методи у своєму екземплярі Faker. Наприклад, щоб створити фальшиве ім’я, ви повинні зробити:
$name = $faker->name;
- Faker Форматери : Faker надає багато засобів форматування, які можна використовувати для створення різних типів даних, таких як адреси, номери телефонів і текст. Ви можете переглянути повний список формататорів у Репозиторій Faker GitHub .
Підроблені форматувальники Laravel
Faker formatters — це методи, які ви викликаєте для генерування фальшивих даних. Вони згруповані за категоріями, наприклад Person
, Address
e Text
. Ось як їх можна використовувати:
- Доступ до власності Faker : ви можете отримати доступ до будь-якого засобу форматування як властивості. Наприклад, щоб створити фальшиве ім’я, ви можете:
$name = $faker->name;
- Підроблені виклики методу : Ви також можете викликати засоби форматування як методи. Це корисно, коли форматувальник приймає аргументи. Наприклад, щоб згенерувати випадкове число від 10 до 20, ви можете:
$number = $faker->numberBetween(10, 20);
- Редагування даних за допомогою модифікаторів optional() і unique() Faker : ці модифікатори дозволяють контролювати, як генеруються дані. Наприклад,
optional()
повертає програму форматуванняnull
певний відсоток часу, eunique()
гарантує, що засіб форматування ніколи не повертає те саме значення двічі.
Створіть фальшивих постачальників даних
Іноді вбудованих формататорів недостатньо. У цих випадках ви можете створити власних постачальників даних. Це як:
- Створіть новий клас, який розширюється
\Faker\Provider\Base
. - Додайте методи для кожного типу даних, які ви хочете створити. Ви можете використовувати інші засоби форматування для створення цих даних.
- Додайте провайдера до Faker за допомогою методу
addProvider()
. Наприклад:$faker->addProvider(new MyCustomProvider($faker));
Тепер ви можете використовувати власні засоби форматування так само, як і вбудовані.
Інтеграція Laravel Faker із Laravel's Factory
Фабричні функції Laravel добре інтегруються з Faker. Ось як їх можна використовувати разом:
- Як використовувати Laravel Faker із Laravel's Factory : у вашому фабричному визначенні ви можете використовувати Faker для створення даних для кожного атрибута. Наприклад, щоб створити фабрику для моделі користувача, ви можете:
$factory->define(App\User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
];
});
- Створення одного фабрика: ви можете створити нову фабрику за допомогою команди artisan
make:factory
. Наприклад,php artisan make:factory UserFactory
створить нову фабрику для моделі User. - Визначення фабричних станів: Фабричні стани дозволяють визначати варіанти фабрики. Наприклад, ви можете визначити стан
verified
для вашої фабрики користувача, яка встановлює атрибутemail_verified_at
на поточну дату та час.
Практичні приклади використання Laravel Faker
Ось кілька прикладів того, як ви можете використовувати Laravel Faker для генерування підроблених даних:
- Створення фейкових користувачів : За допомогою User Factory і Faker ви можете створювати фальшивих користувачів, як це:
factory(App\User::class, 50)->create();
Буде створено 50 користувачів із випадковими іменами та електронними адресами. - Створення фейкових постів : якщо у вас є шаблон публікації та відповідна фабрика, ви можете створювати підроблені публікації для кожного користувача, як це:
App\User::all()->each(function ($user) {
$user->posts()->saveMany(factory(App\Post::class, 10)->make());
});
- Створення фейкових коментарів : Так само ви можете створювати фальшиві коментарі для кожної публікації, як це:
App\Post::all()->each(function ($post) {
$post->comments()->saveMany(factory(App\Comment::class, 5)->make());
});
Пов'язані читання
Ercole Palmeri