Size: a a a

2020 December 30

KN

Konstantin Nosov in symfony
как раз разовость и наводит на идею что миграции тут правильное решение. Запуск команды нужно тоже ведь приурочить к определенной версии бд. Что не есть тривиальной задачей
источник

ВМ

Виктор Монастырев... in symfony
Konstantin Nosov
данные изменится не могут, может поменятся бизнес логика в основном приложении.
вам нужно накатить это всего один раз
Команда, как по нме, излишня потому что её постоянно дергать не будут
Да и удалят её скорее всего спустя неделю
Учитываю что вы накатываете дам базы, то толку от истории миграций тоже нет ни какого
как следствие код внутри миграции в данном случае вполне себя оправдываем, с моей точки зрения
источник

KN

Konstantin Nosov in symfony
Виктор Монастырев
вам нужно накатить это всего один раз
Команда, как по нме, излишня потому что её постоянно дергать не будут
Да и удалят её скорее всего спустя неделю
Учитываю что вы накатываете дам базы, то толку от истории миграций тоже нет ни какого
как следствие код внутри миграции в данном случае вполне себя оправдываем, с моей точки зрения
я вот тоже к такому решению склонен, осталось @DimaSikorskiy согласится :)
источник

KN

Konstantin Nosov in symfony
но к чести сказать я не ожидал что вообще кто-то будет менять данные при помощи команд, для меня такой подход изначально дико звучал (но похоже многие его применяют)
источник

AN

Alexander Nazarov in symfony
Миграция в которой существует бизнес логика это не айс. Все что мы хотим делать в миграции должно быть на SQL.
источник

KN

Konstantin Nosov in symfony
да, но увы сделать генерацию кодов для mariadb не представляется возможным в хранимке (хотя вот в PG можно сделать https://hashids.org/postgresql/)
источник

DS

Dima Sikorskiy in symfony
Konstantin Nosov
я вот тоже к такому решению склонен, осталось @DimaSikorskiy согласится :)
конечно не соглашусь,  генерация  данных может происходить разными путями.  + логика  генерации  будет  использоваться по коду наверное 100%.  как пример получить  уникальный айди с внешнего сервиса.  в миграции вызвать  апи сервис  и обновлять ентити -  это фигня  полная.
источник

AN

Alexander Nazarov in symfony
Если вы изолируете генерацию кода как то вменяемо то это еще норм. Но если ваша генерация кода это что то внутри приложения то это не очень
источник

ВМ

Виктор Монастырев... in symfony
Konstantin Nosov
но к чести сказать я не ожидал что вообще кто-то будет менять данные при помощи команд, для меня такой подход изначально дико звучал (но похоже многие его применяют)
очень редкие кейсы по подготовке данных для новой версии приложения
В основном в миграция только изменения структуры базы данных, но ни как не структуры данных в базе
источник

KN

Konstantin Nosov in symfony
Dima Sikorskiy
конечно не соглашусь,  генерация  данных может происходить разными путями.  + логика  генерации  будет  использоваться по коду наверное 100%.  как пример получить  уникальный айди с внешнего сервиса.  в миграции вызвать  апи сервис  и обновлять ентити -  это фигня  полная.
у нас нет необходимости брать ид из внешнего кода. В нашем случае код рефера это фактически производная из userid, цель которой быть уникальной в рамках бд пользователей
источник

AN

Alexander Nazarov in symfony
эмммм.... Если вы собираетесь в миграции использовать Entity и EntityManager то это явно не правильно
источник

KN

Konstantin Nosov in symfony
Alexander Nazarov
эмммм.... Если вы собираетесь в миграции использовать Entity и EntityManager то это явно не правильно
да, то есть нужно делать это прямым запросом в бд
источник

ВМ

Виктор Монастырев... in symfony
Alexander Nazarov
эмммм.... Если вы собираетесь в миграции использовать Entity и EntityManager то это явно не правильно
поддерживаю
источник

KN

Konstantin Nosov in symfony
Виктор Монастырев
поддерживаю
то есть итого:
использовать php код в миграциях можно, но есть ряд но:
1. код миграции должен быть изолирован от кода приложения
2. в коде миграции нельзя пользоваться Entutyes и иными благами ORM т.к. они внешние по отношению к миграции
3. это оправданно только в том случае если это действительно разовое обновление данных
источник

DS

Dima Sikorskiy in symfony
Konstantin Nosov
у нас нет необходимости брать ид из внешнего кода. В нашем случае код рефера это фактически производная из userid, цель которой быть уникальной в рамках бд пользователей
миграции не должны знать, как  генерировались данные - даже разово)   эти данные могут быть сделанные кодом, а могут  и с помощью внешнего сервиса, а может быть и комбинация
источник

ВМ

Виктор Монастырев... in symfony
Dima Sikorskiy
миграции не должны знать, как  генерировались данные - даже разово)   эти данные могут быть сделанные кодом, а могут  и с помощью внешнего сервиса, а может быть и комбинация
а если твоему приложения к началу его работы УЖЕ нужны обновленные данные? )
источник

KN

Konstantin Nosov in symfony
Dima Sikorskiy
миграции не должны знать, как  генерировались данные - даже разово)   эти данные могут быть сделанные кодом, а могут  и с помощью внешнего сервиса, а может быть и комбинация
это слишком общий случай, в жизни многие преобразования данных являются чистой функцией, если миграция является оной то она может и менять данные.
источник

AN

Alexander Nazarov in symfony
Dima Sikorskiy
миграции не должны знать, как  генерировались данные - даже разово)   эти данные могут быть сделанные кодом, а могут  и с помощью внешнего сервиса, а может быть и комбинация
может быть какие то абстрактные миграции в вакуме этого не должны знать. Но вы же говорите про конкретные миграции в важем проекте?
источник

KN

Konstantin Nosov in symfony
Alexander Nazarov
может быть какие то абстрактные миграции в вакуме этого не должны знать. Но вы же говорите про конкретные миграции в важем проекте?
да, но тут можно сделать обобщение - генерация refcode это чистая функция, похожая на генерацию хеша
источник

DS

Dima Sikorskiy in symfony
Виктор Монастырев
а если твоему приложения к началу его работы УЖЕ нужны обновленные данные? )
дока или написан механизм деплоя. (запуска приложения)
источник