У нас есть атрибут, который был создан в предыдущем операторе обновления, который мы хотели бы удалить. Первоначально он был создан с помощью следующего скрипта:
<?php
$installer = new Mage_Customer_Model_Entity_Setup('core_setup');
$installer->startSetup();
$vCustomerEntityType = $installer->getEntityTypeId('customer');
$vCustAttributeSetId = $installer->getDefaultAttributeSetId($vCustomerEntityType);
$vCustAttributeGroupId = $installer->getDefaultAttributeGroupId($vCustomerEntityType, $vCustAttributeSetId);
$installer->addAttribute('customer', 'custom_id', array(
'label' => 'Custom ID',
'input' => 'text',
'type' => 'varchar',
'forms' => array('adminhtml_customer'),
'required' => 0,
'user_defined' => 1,
));
$installer->addAttributeToGroup($vCustomerEntityType, $vCustAttributeSetId, $vCustAttributeGroupId, 'custom_id', 0);
$oAttribute = Mage::getSingleton('eav/config')->getAttribute('customer', 'custom_id');
$oAttribute->setData('used_in_forms', array('adminhtml_customer'));
$oAttribute->save();
$installer->endSetup();
Вышесказанное хорошо послужило нам, но нам больше не нужен этот custom_id. Итак, я создал следующее обновление:
<?php
$installer = new Mage_Customer_Model_Entity_Setup('core_setup');
$installer->startSetup();
$vCustomerEntityType = $installer->getEntityTypeId('customer');
$vCustomerCustomIdAttribute = $install->getAttribute($vCustomerEntityType, 'custom_id');
$installer->removeAttribute($vCustomerEntityType, $vCustomerCustomIdAttribute);
$installer->endSetup();
Я сохраняю это и считаю, что он должен просто удалить этот атрибут, но это не так. Я иду в раздел администратора, и поле и данные все еще там. Я попытался очистить кэш magento и даже зашел так далеко, что удалил его вручную, чтобы запустить его безрезультатно. Я искал, но не вижу, где моя проблема.
Также этот файл называется mysql4-upgrade-0.1.22-0.1.23.php
и в настоящее время core_resource для этого показывает 0.1.22, так что это должно быть запущено. И, может быть, у меня есть еще один вопрос?
Может кто-нибудь указать мне, почему это не может быть запущено или удаление этих данных?
Вы можете использовать это для удаления атрибута
$installer = $this;
$installer->removeAttribute('customer', 'attribute_code_here');
Других решений пока нет …