Проверьте наличие столбца в таблице прослушивания клиентов
Я пишу код для создания файла sql, чтобы добавить столбец в customer eav table
. Я хочу проверить, существует ли это поле в таблице клиентов или нет.
Вот мой код для создания этого поля>>
$setup = Mage::getModel('customer/entity_setup', 'core_setup');
$setup->addAttribute('customer', 'nationalcode', array(
'type' => 'varchar',
'input' => 'text',
'label' => 'national code',
'global' => 1,
'visible' => 1,
'required' => 0,
'default' => '',
'user_defined' => 1,
'visible_on_front' => 1,
));
Что я должен добавить в этот код, чтобы проверить наличие поля "национальный код" перед его созданием?
1
Author: Alireza Amiri, 2014-04-16
1 answers
Вы уже довольно близки к ответу. Mage_Eav_Model_Entity_Setup::addAttribute()
содержит саму проверку, чтобы определить, является ли операция вставкой или обновлением:
public function addAttribute($entityTypeId, $code, array $attr)
{
$entityTypeId = $this->getEntityTypeId($entityTypeId);
$data = array_merge(
array(
'entity_type_id' => $entityTypeId,
'attribute_code' => $code
),
$this->_prepareValues($attr)
);
$this->_validateAttributeData($data);
$sortOrder = isset($attr['sort_order']) ? $attr['sort_order'] : null;
$attributeId = $this->getAttribute($entityTypeId, $code, 'attribute_id');
if ($attributeId) {
$this->updateAttribute($entityTypeId, $attributeId, $data, null, $sortOrder);
} else {
$this->_insertAttribute($data);
}
//snip...
}
Как вы можете видеть, ваш экземпляр класса установщика (Mage_Customer_Model_Entity_Setup
) имеет необходимый метод.
//Returns associative array if attribute exists, null if not
$installer->getAttribute('customer','nationalcode');
Тем не менее, вы можете видеть важность кодов атрибутов пространства имен. Всегда полезно проверить, но aamiri_nationalcode
было бы "более безопасным" выбором.
6
Author: benmarks, 2014-04-16 10:10:59