Добрый день!
Подскажите, на Yii чтобы например добавить колонку, внешний ключ, индекс, таблицу и т.д., нужно создать новый класс миграции и туда добавить через конструктор или чистый sql код,. Миграция "оборачивается" в транзакцию, после успешной миграции записывается в таблицу миграций. Далее вручную или автоматически обновляется модель(некий аналог сущности в Symfony).
Я заметил что при создании новой миграции в нее помещается код(например на создание таблицы), который уже есть в старой миграции. Может конечно что-то не так понял или настроил.
Вообщем если мне например нужно добавить к таблице колонку, индекс или поменять тип колонки и т.д., если поменять это в сущности, при вызове Make bundle это все сгенерирует новую миграцию с нужным кодом например для добавления колонки? Не добавится ли уже существующий sql код например на создание таблицу, которая есть?
В Symfony по-умолчанию используется Doctrine, для неё есть Doctrine Migrations.
Поскольку Doctrine - data mapper, то вам не нужно "добавить к таблице колонку / индекс / поменять тип колонки", вместо этого вам нужно менять свои entities и mappings для них (подробнее здесь), а затем создать для неё миграцию, используя команду doctrine:migrations:diff для Symfony console. Т.к. команда работает на сравнении схем базы данных - в итоге вы получите миграцию с SQL скриптами для применения и отката изменений, внесённых в ваши mappings.
P747,
если вы создатие руками таблицу то при синхронизации сущностей и БД ваша таблица будет лишней, и значит создастся миграция на удаление таковой (если не отметить, что ее надо игнорировать)
P747, да, доктрина смотрит на код и на состояние БД
если есть новая сущность для маппинга и она видит, что в БД нет таблицы — создастся миграция с озданием таковой с нужными полями
P747, Не обязательно, лучше привязывать миграции к законченным функциональным изменениям, а они могут затрагивать и несколько таблиц. Можете думать о миграциях как о коммитах для структуры базы данных.