AddAttribute() против AddColumn()?


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

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

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

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

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

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

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

Author: Community, 2014-12-12

1 answers

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

  • addColumn добавляет столбец в таблицу.
  • addAttribute добавляет новый атрибут для объектов EAV. Таким образом, в таблице eav_attribute будет создана новая запись.
  • Исключение: Для модуля продаж addColumn и addAttribute делают то же самое. Они добавляют столбец в таблицу. Причина в обратной совместимости. До версии 1.4 объекты продаж (заказы, счета-фактуры, отгрузки, товары,...) были прослушиваемыми, поэтому вам приходилось использовать addAttribute. Начиная с 1.4 объекты продаж являются плоскими, поэтому вы должны использовать addColumn. Но для обратной совместимости, начиная с версии 1.4, addAttribute - это просто оболочка для addColumn.
  • addAttributeSet используется для объектов подслушивания, и он делает то, что говорит. Он создает новый набор атрибутов для этой сущности. Я думаю, что он используется только для продуктов, потому что все остальные объекты EAV (категория, клиент, customer_address) используют один набор атрибутов.
  • addAttributeSetNames - Я не нашел ни одного случая этого где-либо в ядре код.
 5
Author: Marius, 2015-04-10 05:20:58