Как создать миграцию из готовой таблицы?

Laravel
3 мин. на чтение

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

Вредный совет №1

Использовать модули из репозитория, например такой https://github.com/Xethron/migrations-generator. Руки бы поотрывал за такие советы. Во-первых, это лишние телодвижения с composer.json, vendor и пр., а кроме того такие модули в основном заброшены их авторами и могут элементарно сломать ваш проект. Сегодня я потратил час на восстановление проекта именно из-за несовместимости, пришлось пересобрать рабочую копию из чистого репозитория. Так что проходим сразу мимо всяких модулей.

Вредный совет №2

Да что там той миграции? Взял и создал все руками! Скажут какие-то олдскульные дяди и тети и вот ни капли их не учит «Закон больших чисел». Например, я сегодня по ошибке забыл одну букву в названии поля в таблице, вместо channel написал chanel. Результат – немного матов, коммит, пул реквест, заливка на прод обновленного репозитория и это еще спасибо, что автотесты были вырублены.

Полезный совет №1

К сожалению, я не подскажу Вам решения если вы используете не MySQL. Сегодня говорим о том, как создать миграцию из готовой таблицы для MySQL. Перво-наперво, вам понадобится авторизоваться в консоль или любым другим методом выполнить команду в БД.

SHOW CREATE TABLE table_name

Эта команда выведет на экран запрос для генерации таблицы с полями. В ответ вы получит что-то наподобие:

CREATE TABLE `oc_setting` (
  `setting_id` int(11) NOT NULL AUTO_INCREMENT,
  `store_id` int(11) NOT NULL DEFAULT '0',
  `code` varchar(32) NOT NULL,
  `key` varchar(64) NOT NULL,
  `value` mediumtext NOT NULL,
  `serialized` tinyint(1) NOT NULL,
  PRIMARY KEY (`setting_id`)
) ENGINE=MyISAM AUTO_INCREMENT=13672 DEFAULT CHARSET=utf8

Далее просто идем на этот сайт и вставляем туда наш запрос и нажимаем кнопку Generate:

Все, файл миграции готов.

Ihor Chyshkala
Пишу статьи про ИТ в свободное от работы время.
Оцените автора
Авторский блог Игоря Чишкалы
Добавить комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.