Вопрос

Хотя я осведомлен о аналогичный вопрос.Мой вопрос более общий: что произойдет с обоими вызовами независимо от того, создаю ли я столбец базы данных или нет.

РЕДАКТИРОВАТЬ

Я знаю addColumn() добавит настоящий столбец таблицы, но когда я углубляюсь в некоторые основные модули, некоторые из них вызывают оба addColumn() и addAttribute() в то же поле.

В чем разница между ними?

РЕДАКТИРОВАТЬ 2

Потому что addAttribute() выглядит очень похожим на EAV, после некоторых исследований я также нашел несколько похожих имен, например addAttributeSet() и addAttributeSetNames().

Чем они отличаются друг от друга?

Это было полезно?

Решение

Давайте сделаем это шаг за шагом.

  • addColumn добавляет столбец в таблицу.
  • addAttribute добавляет новый атрибут для объектов EAV.Таким образом, новая запись будет создана в eav_attribute стол.
  • Исключение:Для модуля продаж: addColumn и addAttribute сделать то же самое.Они добавляют столбец в таблицу.Причина — обратная совместимость.До версии 1.4 объекты продаж (заказы, счета-фактуры, отгрузки, товары и т. д.) были EAV, поэтому вам приходилось использовать addAttribute.Начиная с версии 1.4, торговые организации не имеют фиксированного значения, поэтому вам придется использовать addColumn.Но для обратной совместимости, начиная с версии 1.4, addAttribute это просто оболочка для addColumn.
  • addAttributeSet используется для объектов EAV и делает то, что говорит.Он создает новый набор атрибутов для этой сущности.Я думаю, что он используется только для продуктов, потому что все остальные объекты EAV (категория, клиент, клиент_адрес) используют один набор атрибутов.
  • addAttributeSetNames - Я не нашел подобных случаев где-либо в основном коде.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top