addAttribute() против addColumn()?
-
12-12-2019 - |
Вопрос
Хотя я осведомлен о аналогичный вопрос.Мой вопрос более общий: что произойдет с обоими вызовами независимо от того, создаю ли я столбец базы данных или нет.
РЕДАКТИРОВАТЬ
Я знаю 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
- Я не нашел подобных случаев где-либо в основном коде.
Не связан с magento.stackexchange