Phinx — система міграції бази даних

20

Від автора: розробляючи веб-додатки, так чи інакше, Ви працюєте з кодом і формуєте логіку. При цьому на певних етапах, структура програми може змінюватися. Тобто, що то буде додано, що то видалено, що то оптимізовано і т. д. І це нормально для процесу розробки. Але погодьтеся, якщо зміни зачіпають код, то вони, так само, можуть торкнутися і структури бази даних, знову ж створення нових таблиць, додавання необхідних полів і т. д. Тому в даному уроці ми поговоримо про таке поняття як міграції бази даних і розглянемо спеціальну бібліотеку, завдяки якій ми з легкістю зможемо керувати міграціями.

Phinx — система міграції бази данихPhinx — система міграції бази даних

Для початку хотів би зазначити ,що міграція— оновлення структури бази даних від однієї версії до іншої (зазвичай більш нової). При цьому Ви повинні розуміти, що міграція не передбачає перенесення бази даних з однієї системи управління базами даних в іншу. Міграція – це зміна елементів входять в структуру бази даних, тобто таблиць. Наприклад, створення і видалення таблиць, додавання нових полів, редагування існуючих і т. д.

Відповідно, під версією розуміється стан структури бази даних на певний момент часу. Наприклад, створення таблиці – версія 1. Створення таблиці – версія 2. Додавання полів у першу таблицю – версія 3 і т. д. Таким чином, міграції реалізують контроль версій стосовно до баз даних.

Звичайно контроль версій баз даних, так і в принципі коду програми, більш актуальне в тому випадку, коли розробка ведеться командою розробників. Але все ж, початківцям веб-майстрам корисно знати, що це таке.
Тому сьогодні я хотів би представити Вашій увазі бібліотеку Phinx — тобто готову систему міграцій, для баз даних, яку Ви можете використовувати в своїх проектах.

Почнемо, звичайно ж, з установки бібліотеки, а значить переходимо на офіційний сайт розробників.

Далі, клацнувши по кнопці «INSTALLNOW…» Ви побачите інструкції по установці даної бібліотеки. Я буду виконувати установку з використанням інструменту composer, бо він поставляється разом з інтерпретатором мови PHP, у програмному забезпеченні OpenSrver, який я використовую.

Відповідно відкриваємо консоль OpenServer, переходимо в каталог з даним веб-додатком і виконуємо наступні команди:

composer require robmorgan/phinx
composer install —no-dev

Після виконання даних команд, бібліотека Phinx буде встановлена у Вашому проекті. Далі, потрібно сформувати конфігураційний файл з розширенням .yml, в якому будуть міститися основні налаштування необхідні для роботи системи міграцій.

php vendor/robmorgan/phinx/bin/phinx init

Таким чином, вищевказана команда, створить спеціальний файл phinx.yml в корені проекту, який ми відкриваємо в текстовому редакторі.

paths:
migrations: %%PHINX_CONFIG_DIR%%/migrations
seeds: %%PHINX_CONFIG_DIR%%/seeds
environments:
default_migration_table: phinxlog
default_database: development
production:
adapter: mysql
host: localhost
name: production_db
user: root
pass:»
port: 3306
charset: utf8
development:
adapter: mysql
host: localhost
name: phinx_db
user: root
pass:»
port: 3306
charset: utf8
testing:
adapter: mysql
host: localhost
name: testing_db
user: root
pass:»
port: 3306
charset: utf8

Отже, параметри migrations і seeds – визначають шляхи для зберігання класів міграцій і класів додавання початкової інформації в таблиці, відповідно.

Параметр default_migration_table – задає назву створюваної таблиці в базі даних, яка необхідна для зберігання різної системної інформації.

Середовище розробки, тобто певний набір налаштувань, заданий в налаштуванні default_database. При цьому для кожної середовища розробки передбачені різні налаштування підключення до бази даних. Тому оберіть для себе цікаву середовище і додайте налаштування.

adapter – драйвер підключення;

host – сервер бази даних;

name – ім’я бази даних;

user – ім’я користувача;

pass – пароль користувача;

port – порт підключення;

charset – кодування.

Закінчивши, ми можемо створити перший міграцію, а значить виконаємо наступну команду в консолі.

phpvendor/robmorgan/phinx/bin/phinxcreateCreateTableArticles

Зверніть увагу, команда create, створює клас нової міграції, ім’я якого вказується перед командою через пробіл. Відповідно клас нової міграції буде створений в каталозі, ім’я якого зазначено в налаштуваннях в параметрі migrations.