Magento:如何正确地将自定义属性安装到DB表中?

Magento:如何正确地将自定义属性安装到DB表中?,magento,Magento,我已经做了一些修改,我的magento安装,使其符合我的需要,但我来了不少墙。这是我所做的一些事情,以备我接下来的问题需要参考 因此,我已经学习了一些关于添加自定义属性的教程,但对于如何运行脚本将属性添加到正确的表中,我感到困惑 原因如下 我注意到magento已经出现的“电话”字段出现在几个表上 eav_属性(4个实例)然后电话字段的属性_id也会出现在其他表中,所有4个实例都是如此。现在,我已经添加了一个移动电话号码字段,如我前面的问题所示,但我不知道如何使它以必要的值显示在所有这些

我已经做了一些修改,我的magento安装,使其符合我的需要,但我来了不少墙。这是我所做的一些事情,以备我接下来的问题需要参考

因此,我已经学习了一些关于添加自定义属性的教程,但对于如何运行脚本将属性添加到正确的表中,我感到困惑

原因如下

我注意到magento已经出现的“电话”字段出现在几个表上

eav_属性(4个实例)然后电话字段的属性_id也会出现在其他表中,所有4个实例都是如此。现在,我已经添加了一个移动电话号码字段,如我前面的问题所示,但我不知道如何使它以必要的值显示在所有这些表中

我现在的资源有限,无法提供更详细的信息,但如果有人能理解我试图解释的内容,请帮助我

谢谢。

回答
  • 使用实体模块的设置资源类执行的设置脚本
为什么? 虽然存在对所有EAV属性和实体通用的类和表(例如,
EAV_属性
表和
Mage_EAV_模型_实体_设置
),但每个EAV实体可能有一个附加的属性信息表。通用设置资源类
Mage\u Eav\u Model\u Entity\u setup
有一个
\u prepareValues()
方法,该方法为所有通用属性元数据(即
Eav\u属性
表中的列)设置默认值。在
Mage\u Customer
的情况下,除其他外,还有
Customer\u eav\u属性表。
Mage\u Customer
setup资源类
Mage\u Customer\u Model\u Entity\u setup
覆盖此方法,调用父方法并添加存储在
Customer\u eav\u属性
表中的更多元数据默认值

因此,尽管安装资源文件可以在任何上下文(安装类实例)中执行,但如果它正在修改其他模块的EAV配置,则需要使用正确的类来执行

<?php

$installer = Mage::getResourceModel('customer/setup','customer_setup');

$installer->startSetup();

$installer->addAttribute(
    'customer',
    'new_attribute_code',
    array('label'=>'Label','type' => 'text')
)

$installer->endSetup();

非常感谢您的回复。我将为必要的属性编写一个设置脚本,并尝试一下,希望它能正常工作。手动添加/删除数据库中的值并不完全是我想做的事情,但我不确定什么是最好的方法。