我已经创建了一个自定义EAV属性,该属性已添加到我的客户表中,我正在尝试创建一个将填充它的函数。
我目前拥有的是:
$customer = Mage::getModel("customer/customer")->load(22);
$customer->setProfession("aaaaaaaaaaaaaaaaaaaa");
$customer->save();
但由于某种原因,它并没有挽救它。我可以设置像Firstname这样的标准字段,但是我很难保存我创建的任何自定义EAV属性。
有人可以帮忙吗?
答案 0 :(得分:2)
首先, 使用setData()函数对其进行测试,以验证您使用的是正确的属性名称。
$customer->setData('profession', 'some profession');er code here
其次, 你是如何创建该属性的? 我建议这样做(在安装/升级文件.php中):
$installer = $this;
$installer->startSetup();
$setup = new Mage_Eav_Model_Entity_Setup('core_setup');
$entityTypeId = $setup->getEntityTypeId('customer');
$attributeSetId = $setup->getDefaultAttributeSetId($entityTypeId);
$attributeGroupId = $setup->getDefaultAttributeGroupId($entityTypeId, $attributeSetId);
//drop attribute if it already exists (to avoid problems)
$setup->removeAttribute('customer', 'profession');
//now recreate the attribute
$this->addAttribute('customer', 'profession', array(
'type' => 'varchar',
'input' => 'text',
'label' => Mage::helper('core')->__("Customer profession"),
'global' => 1,
'visible' => 1,
'required' => 0,
'user_defined' => 1,
'visible_on_front' => 1));
//adding the attribute in backend Forms in case you want that
Mage::getSingleton('eav/config')
->getAttribute('customer', 'profession')
->setData('used_in_forms', array('adminhtml_customer', 'customer_edit'))
->save();
让我知道它现在是否适合您。