我现在正在和一个看起来很简单的事情进行大约两天的战斗。我希望有人可以提供帮助。
我创建了myUpdate EAV属性
class Company_Module_Model_Resource_Eav_Mysql4_Setup extends Mage_Eav_Model_Entity_Setup
{
public function getDefaultEntities()
{
return array(
'catalog_product' => array(
'entity_model' => 'catalog/product',
'attribute_model' => 'catalog/resource_eav_attribute',
'table' => 'catalog/product',
'additional_attribute_table' => 'catalog/eav_attribute',
'entity_attribute_collection' => 'catalog/product_attribute_collection',
'attributes' => array(
'my_update' => array(
'label' => 'My timestamp',
'type' => 'datetime',
'input' => 'date',
'default' => '',
'class' => 'validate-date',
'backend' => 'eav/entity_attribute_backend_datetime',
'frontend' => '',
'table' => '',
'source' => '',
'global' => Mage_Catalog_Model_Resource_Eav_Attribute::SCOPE_GLOBAL,
'visible' => true,
'required' => false,
'user_defined' => true,
'searchable' => false,
'filterable' => false,
'comparable' => false,
'visible_on_front' => false,
'visible_in_advanced_search' => false,
'unique' => false,
'apply_to' => 'simple',
)
)
)
);
}
}
创建属性确定并在安装时在属性列表中正确显示。
后来我做了
// for product 1
$product->setMyUpdate($stringDate); // string this format: yyyy-MM-dd HH:mm:ss
$product->save(); // and saves without issues * in admin module
但后来当我这样做时:
$product = Mage::getModel('catalog/product')->load(1);
var_dump($product->getMyUpdate()); // returns null
不知何故数据没有真正保存..或者我没有正确检索它。 请告知如何获取数据以及数据保存在数据库中的位置,以便检查插入是否正确完成。
感谢。
答案 0 :(得分:1)
默认情况下不保存您的属性。您可以使用:
$product->getResource()->saveAttribute($product, "name_of_your_attribute");
答案 1 :(得分:1)
在数据库中,该属性应保存在由其attribute_id组织的表catalog_product_entity_datetime
中。首先得到entity_type_id(因为我的显然与你的不同):
select entity_type_id from eav_entity_type where entity_type_code = 'catalog_product';
我在最后一个上获得4分,但替换为适用。以下查询应列出所有已保存的值:
select * from catalog_product_entity_datetime where attribute_id = (select attribute_id from eav_attribute where entity_type_id = 4 and attribute_code = 'my_update');
确保您已将该属性实际添加到数据库中:
select attribute_id from eav_attribute where entity_type_id = 4 and attribute_code = 'my_update'
如果您在该空间中看到值,则问题可能是您没有选择要加载的属性。例如,如果要从目录产品集合加载产品,则需要加载属性的方法:
$collection->addAttributeToSelect("my_update");
如果您发现数据实际已保存,请提供有关产品加载的更多背景信息。
希望有所帮助。
谢谢!乔