将数据保存在自定义EAV属性中

时间:2016-03-21 11:43:53

标签: magento attributes save entity-attribute-value

我已经创建了一个自定义EAV属性,该属性已添加到我的客户表中,我正在尝试创建一个将填充它的函数。

我目前拥有的是:

    $customer = Mage::getModel("customer/customer")->load(22);
    $customer->setProfession("aaaaaaaaaaaaaaaaaaaa");
    $customer->save();

但由于某种原因,它并没有挽救它。我可以设置像Firstname这样的标准字段,但是我很难保存我创建的任何自定义EAV属性。

有人可以帮忙吗?

1 个答案:

答案 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();

让我知道它现在是否适合您。