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

Phinx - система миграции базы данных

От автора: разрабатывая веб-приложения, так или иначе, Вы работаете с кодом и формируете логику. При этом на определенных этапах, структура приложения может меняться. То есть, что то будет добавлено, что то удалено, что то оптимизировано и т.д. И это нормально для процесса разработки. Но согласитесь, если изменения затрагивают код, то они, так же, могут коснуться и структуры базы данных, опять же создание новых таблиц, добавление необходимых полей и т.д. Поэтому в данном уроке мы поговорим о таком понятии как миграции базы данных и рассмотрим специальную библиотеку, благодаря которой мы с легкостью сможем управлять миграциями.

скачать исходникискачать урок

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

Соответственно, под версией понимается состояние структуры базы данных на определенный момент времени. К примеру, создание таблицы – версия 1. Создание следующей таблицы – версия 2. Добавление полей в первую таблицу – версия 3 и т.д. Таким образом, миграции реализуют контроль версий применительно к базам данных.

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Конечно контроль версий баз данных, да и в принципе кода приложения, более актуален в том случае, когда разработка ведется командой разработчиков. Но все же, начинающим веб мастерам полезно знать, что это такое.
Поэтому сегодня я хотел бы представить Вашему вниманию библиотеку Phinx — то есть готовую систему миграций, для баз данных, которую Вы можете использовать в своих проектах.

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

Далее, кликая по кнопке “INSTALLNOW…” Вы увидите инструкции по установке данной библиотеки. Я буду выполнять установку с использованием инструмента composer, потому как он поставляется вместе с интерпретатором языка PHP, в программном обеспечении OpenSrver, которое я использую.

Соответственно открываем консоль OpenServer, переходим в каталог с разрабатываемым веб-приложением и выполняем следующие команды:

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

Таким образом, вышеуказанная команда, создаст специальный файл phinx.yml в корне проекта, который мы открываем в текстовом редакторе.

Итак, параметры migrations и seeds – определяют пути для хранения классов миграций и классов добавления начальной информации в таблицы, соответственно.

Параметр default_migration_table – задает название создаваемой таблицы в базе данных, которая необходима для хранения различной системной информации.

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

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

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

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

user – имя пользователя;

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

pass – пароль пользователя;

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

charset – кодировка.

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

Обратите внимание, команда create, создает класс новой миграции, имя которого указывается перед командой через пробел. Соответственно класс новой миграции будет создан в каталоге, имя которого указывалось в настройках в параметре migrations.

Как Вы видите – миграция это обычный класс PHP, в котором по умолчанию прописан метод change(), реализующий обратимые миграции. То есть миграция при запуске, так или иначе выполняет некоторое действие, к примеру добавление новых полей в определенную таблицу базы данных. Но особенность миграций заключается в том, что Вы всегда можете отменить действие выполняемое миграцией, то есть осуществить откат. Поэтому действия, которые будут описаны в методе change() – выполняются при запуске миграции и соответственно отменяются при откате.

Помимо выше указанного метода, Вы можете создать в классе миграции, два дополнительных метода: up() и down(). При запуске миграции – вызывается на исполнение метод up(), при откате – down(). Заметьте, что Phinx, игнорирует два выше указанных метода, в том случае, когда описан метод change().

Как видно из названия класса, новая миграция должна создать таблицу Articles в базе данных, а значит, мы должны добавить специальный код в метод change(), который и реализует данное действие.

Для начала необходимо указать с какой таблицей мы будем работать, используя метод table(). В качестве первого аргумента передается имя таблицы, в нашем случае “articles”. При этом вышеуказанный метод вернет объект представляющий данную таблицу, а значит далее мы можем использовать методы, которые будут формировать структуру будущей таблицы. В частности метод addColumn() – добавляет новый элемент, то есть новое поле таблицы. Обратите внимание, что в качестве параметров необходимо указать имя создаваемого поля, тип данных, которые будет хранить поле и последний необязательный аргумент – атрибуты поля в виде массива.

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

Завершающий метод цепочки – create(), который указывает библиотеке, что необходимо создать новую таблицу. Создав класс миграции, его нужно запустить в работу, для этого необходимо выполнить следующую команду.

Если в классе миграции, код описан верно – в базе данных будет создана таблица с набором полей описанных с использованием метода addColumn(). Для отмены действий, выполненных классом миграции, необходимо осуществить откат:

Таким образом, Вы отмените все действия описанные в методе change();

Собственно на этом данный урок я буду завершать. Более расширенную версию, Вы можете увидеть в видео уроке, где мы рассмотрели вопросы удаления и редактирования таблиц, а так же научились добавлять начальную информацию в таблицы, то есть осуществлять так называемый посев данных.

Всего Вам доброго и удачного кодирования!!!

Бесплатный курс по PHP программированию

Освойте курс и создайте динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Получить курс сейчас!

Хотите изучить MySQL?

Прямо сейчас посмотрите 24-х часовой курс по базе данных MySQL!

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree