...
✅ WEB і WordPress новини, теми, плагіни. Тут ми ділимося порадами і кращими рішеннями для сайтів.

Як виконувати висів бази даних у Laravel

39

Раніше я опублікував статтю Як заробити базу даних у 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. Я хотів би почути ваші думки та пропозиції у розділі коментарів нижче.

Пов’язані статті

Джерело запису: artisansweb.net

Цей веб -сайт використовує файли cookie, щоб покращити ваш досвід. Ми припустимо, що з цим все гаразд, але ви можете відмовитися, якщо захочете. Прийняти Читати далі