База даних наповнення даними (seeding)

Laravel має простий метод заповнення бази даних тестовими даними, використовуючи класи-наповнювачі (seed classes). Ці класи зберігаються в database / seeds. Можна використовувати будь-яке ім'я для назви класу-наповнювача, але розумним буде застосовувати імена, подібні UsersTableSeeder. За замовчуванням клас DatabaseSeeder вже створено в папці наповнювачів. В цьому класі ви можете використовувати метод call для запуску інших наповнювачів, що дозволяє вам контролювати порядок наповнення.

створення наповнювачів

Для створення наповнювача можна використовувати команду make: seeder Artisan command. Команда створює наповнювач в папці database / seeds:

За замовчуванням клас-наповнювач містить тільки один метод: run. Метод викликається, коли запускається команда db: seed Artisan command. У методі run ви можете вставляти дані в БД будь-яким зручним способом. Ви можете використовувати query builder для ручної вставки або використовувати Eloquent model factories.

Для прикладу давайте змінимо створюваний за замовчуванням клас DatabaseSeeder. Додамо вираз вставки в метод run:

Використання фабрики

Безсумнівно, ручне визначення атрибутів для кожної моделі-наповнювача втомлює. Замість цього ви можете використовувати model factories для створення великого числа записів в БД. Насамперед вивчіть, як потрібно визначати фабрики model factory documentation. Після визначення ви можете використовувати функцію-помічник factory для вставки записів в БД.

Наприклад, створимо 50 користувачів і додамо зв'язок для кожного користувача:

Виклик додаткових наповнювачів

У класі DatabaseSeeder можна використовувати метод call для запуску додаткових класів-наповнювачів. Метод call дозволити робити наповнення БД за допомогою безлічі файлів, не створюючи один великий клас-наповнювач. Просто передай методу бажаний клас-наповнювач для його запуску:

запуск наповнювачів

Після написання класів-наповнювачів використовуйте команду Artisan команду db: seed для заповнення БД. За умовчанням вона виконає клас DatabaseSeeder. який може бути використаний для виклику інших класів-наповнювачів. Однак, можна використовувати опцію --class для вказівки іншого класу-наповнювача:

Також можна заповнити БД за допомогою команди migrate: refresh. яка зробить відкат змін і застосує всі міграції заново. Ця команда корисна для повного перестроювання БД:

Приєднуйтесь