【发布时间】:2013-11-01 09:14:33
【问题描述】:
我注意到 magento 的行为有些奇怪。 它看起来像一个错误,或者我错过了一些东西...... 我做了一个简单的查询来检索产品
$collection = Mage::getResourceModel('catalog/product_collection')
->addAttributeToSelect('price')
->addAttributeToSelect('sku')
->addAttributeToSelect('name')
->addAttributeToFilter(array(array(
'attribute' => 'my_attribute',
'eq' => 'my_value' )
));
//Then I update
foreach($collection as $_product){
$_product->setData("name","my_other_val");
$_product->save();
}
Magento 不仅会更新“名称”,还会更新所有必填字段并设置默认值!! 例如,当产品具有另一个可见性时,它将“可见性”属性更改为“搜索、目录”! 我的可配置产品现在一团糟,它还改变了其他属性。
你怎么解释这个?
我做了一个反向操作,并在保存产品时检索了整个属性列表,使用以下方法: walk属性 它这样做: 案例“后端”: $instance = $attribute->getBackend();
检索所有属性。由于它们没有值(它们不在 addAttributeToSelect 部分中),因此它使用默认值。 一种解决方案是添加 ->addAttributeToSelect('可见性') 以及所有必需的属性。 但是太危险了,我可能会错过一个,或者可以添加一个带有所需属性的新属性对吗?
对我来说这是一个错误,因为默认值应仅适用于非现有属性值,但 magento 不进行检查,它会执行 INSERT 或 UPDATE 的查询。
SQL: INSERT INTO catalog_product_entity_int (entity_type_id,attribute_id,store_id,entity_id,value) 值 (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?), (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE value = VALUES(value)
...
谢谢, 棒
【问题讨论】:
标签: magento