[php] ALTER TABLE в скрипте настройки Magento без использования SQL



Answers

Идея о том, что любые обновления Magento НЕ ДОЛЖНЫ включать SQL, основана на идее, что

  1. Объекты Magento предоставляют абстракции поверх уровня базы данных / хранилища данных

  2. Вы должны использовать абстракции для обновления Magento, что гарантирует, что команда Magento изменит способ взаимодействия объектов с хранилищем данных, ваши обновления все равно будут работать (при условии, что основная команда поддерживает исходные «контракты», подразумеваемые методами Object)

Таким образом, проблема в выражении ALTER TABLE напрямую изменяет хранилище данных. Если вы подписываетесь исключительно на эти две идеи, вы никогда не должны менять хранилище данных. (что в случае добавления столбца или индекса означает использование только моделей EAV, использование ресурсов установки для управления изменениями и принятие индексации Magento).

Хорошим общим правилом является то, что если вы меняете или добавляете некоторые функциональные возможности Magento (продукты, обзоры и т. Д.), Избегайте прямого изменения структуры базы данных, если только вы не захотите тщательно управлять ею во время обновлений.

Если вы создаете новые объекты и функции, используйте любой SQL, который вы хотите создать и измените ваши таблицы через Ресурсы установки. Если вы посмотрите на файлы установщика / обновления, вы увидите, что основная команда Magento делает это самостоятельно.

Question

Джонатан Дэй говорит

«обновления НЕ ДОЛЖНЫ быть в форме команд SQL». Я не сталкивался с любыми статусами DDL или DML, которые не могут быть выполнены через конфигурационные структуры Magento.

(В вопросе Как перенести изменения конфигурации из среды разработки в производственную среду? )

Я хотел бы знать, как лучше добавлять / изменять / удалять столбцы или индексы в / из таблицы таким образом, но не полагаясь на SQL? Возможно ли это?

Кроме того, какие другие действия могут быть выполнены только в SQL?






Links