AddAttribute() против AddColumn()?
В то время как я осведомлен о аналогичном вопросе . Мой вопрос более общий: что произойдет с обоими вызовами, независимо от того, действительно ли я создаю столбец базы данных или нет.
РЕДАКТИРОВАТЬ
Я знаю, что addColumn()
добавит реальный столбец таблицы, но когда я погружаюсь в некоторые основные модули, некоторые из них вызывают как addColumn()
, так и addAttribute()
в одно и то же поле.
В чем разница между ними?
РЕДАКТИРОВАТЬ 2
Потому что addAttribute()
похоже, что это очень похоже на меня, после некоторых исследований я также нахожу некоторые похожие имена, такие как addAttributeSet()
и addAttributeSetNames()
.
Чем они отличаются друг от друга?
1
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