Як виконувати висів бази даних у Laravel
Раніше я опублікував статтю Як заробити базу даних у PHP за допомогою бібліотеки Faker. Досліджуючи цю тему, я виявив, що Laravel також використовує ту саму бібліотеку для заснування бази даних. Оскільки я писав статтю на цю тему для PHP, я вирішив також написати допис про запуск бази даних Laravel. Це пов’язано з тим, що Laravel використовує власний процес для засівання бази даних.
Що таке насіння бази даних?
Завантаження бази даних означає програмне заповнення таблиць бази даних тестовими даними. За такого підходу можна ввести тисячі записів до бази даних протягом декількох хвилин. Це ефективний спосіб, а не робити це вручну. Можливо, вам знадобляться фіктивні дані для тестування вашої програми, а розповсюдження бази даних за допомогою програми економить купу часу.
Бібліотека Faker
Faker – це бібліотека з відкритим кодом, яка генерує підроблені дані для бази даних вашої програми. За допомогою Faker можна вставити тисячі записів у базу даних за пару хвилин. Ця бібліотека зберігає нудне завдання введення даних для розробників. Ви можете отримати практично будь-який тип даних, який хочете. Бібліотека генерує фальшивий електронний лист, ім’я, номер мобільного телефону, слова, речення, абзаци, випадкові числа тощо. Ви можете прочитати дані, які вони надають у документації.
Laravel встановлює цю бібліотеку по суті. Це означає, що вам не потрібно встановлювати його окремо. З огляду на це, давайте подивимося, як виконувати висів бази даних у Laravel.
Починаємо
Для того, щоб розпочати, я збираюся створити таблицю "клієнтів" із назвою стовпців, електронною поштою та біографією. Ми побачимо процес висівання єдиного столу. Таким же чином користувачі можуть надати стільки таблиць, скільки хочуть.
Створіть таблицю міграції для клієнтів за допомогою команди:
php artisan make:migration create_customers_table
Відкрийте файл міграції та додайте стовпці до методу ‘вгору’, як показано нижче.
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email');
$table->text('bio');
$table->timestamps();
});
}
Запустіть команду migrate, яка створить таблицю "клієнтів" у вашій базі даних.
php artisan migrate
Далі створіть модель "Клієнт", яка відображається в таблиці "Клієнти". Починаючи з Laravel 8.x, ваші моделі створюватимуться в каталозі "Програми / Моделі". Для цього підручника я припускаю, що ви використовуєте Laravel 8.x. У попередній версії Laravel вам потрібно налаштувати шлях до моделі.
php artisan make:model Customer
Насіння бази даних у Laravel
Посів бази даних у Laravel вимагає, щоб ви виконали кілька кроків, які стосуються написання сівалок, створення модельної фабрики та запуску сівалок. Давайте робити це по одному.
Написання сівалок
Якщо ви подивитесь на файлову систему Laravel, то помітите каталог database/seeders
. Усі класи насіння будуть знаходитися всередині цього каталогу. Клас насіння має run
метод, звідки ви можете вставити дані в таблицю.
Створіть насіннєвий клас CustomerSeeder, використовуючи команду:
php artisan make:seeder CustomerSeeder
Після виконання цієї команди ви побачите CustomerSeeder.php
файл, створений під database/seeders
. Відкрийте цей файл і run
додайте до функції наступний код.
public function run()
{
AppModelsCustomer::factory()->count(50)->create()->each(function ($customer) {
$customer->save();
});
}
Тут я телефоную до фабрики замовника, яку ми створимо на наступному кроці. Зверніть увагу, що я передав значення як 50 методу ‘count’. Це означає, що в таблицю "клієнтів" слід вставити 50 рядків. Відрегулюйте це значення як завгодно.
Створення фабрик
Код, який я написав, CustomerSeeder
буде шукати фабрику для отримання даних тесту. Це означає, що ми повинні створити модельну фабрику. Я дам фабриці назву CustomerFactory. Запустіть команду, щоб створити фабрику моделей.
php artisan make:factory CustomerFactory --model=Customer
Ця команда створить CustomerFactory.php
усередині database/factories
каталогу. Відкрийте цей файл і для методу визначення згенеруйте дані тесту наступним чином.
public function definition()
{
return [
'name' => $this->faker->name,
'email' => $this->faker->unique()->safeEmail,
'bio' => $this->faker->text,
];
}
Наведений вище масив повертає випадково вибране ім’я, електронну адресу та текст для біографії.
Запуск сівалок
Ми все налаштували із сівалкою та заводом. Тепер запустіть нашу сівалку, використовуючи команду нижче.
php artisan db:seed --class=CustomerSeeder
Перевірте таблицю своїх клієнтів, і вона повинна мати 50 фіктивних записів.
Вищевказана команда запускає єдиний сіяльник, який ми передали явно. Скажімо, ви хочете створити кілька сіялок і запустити всі з них за допомогою однієї команди. У таких випадках вам слід зателефонувати до сівалок, DatabaseSeeder
які знаходяться в тому ж каталозі database/seeders
.
public function run()
{
$this->call(CustomerSeeder::class);
// call as many seeders you wish
}
Користувач може створити стільки сівалок відповідно до їх вимог і викликати їх за допомогою цього run
методу.
Нарешті, запустіть сівалки, використовуючи команду нижче.
php artisan db:seed
Він викличе всі сівалки з run
методу і виконає його.
Сподіваюся, ви розумієте про засівання бази даних у Laravel. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.
Пов’язані статті
- Інтеграція PayPal Payments Pro в Laravel
- Створіть Honeypot для боротьби зі спамом у Laravel
- Додавання Google reCAPTCHA v3 до вашого веб-сайту Laravel