我注意到magento行爲中有些奇怪的東西。 它看起來像任何一個錯誤,或者我錯過了什麼...... 我做一個簡單的查詢中檢索產品magento Bug與資源集合
$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不僅將更新「名」,它將更新所有必填字段並設置默認值!! 因此,例如,它將「可見性」屬性更改爲「搜索目錄」,而產品具有另一種可見性! 我現在已經混亂了我的可配置產品,它也改變了其他屬性。
你如何解釋這一點?
我沒有反向和屬性的整個列表,同時節省該產品被檢索,在該方法中: walkAttributes 它這樣做: 情況下「後端」: $實例= $屬性 - > getBackend();
其中檢索所有屬性。由於它們沒有值(它們不在addAttributeToSelect部分中),因此它使用默認值。 一個解決方案是添加 - > addAttributeToSelect('visibility') 和所有必需的屬性。 但是太危險了,我可能會錯過一個,或者一個新的屬性可以添加所需的屬性嗎?
對我來說這是一個錯誤,因爲默認值應該只適用於非現有屬性值,但Magento的沒有做的檢查,它這個查詢其插入或更新.. SQL:INSERT INTO catalog_product_entity_int
(entity_type_id
(?,?,?,?,?),(?,?,?,?,?),????????????????????????????????????????????????? ,?,?,?)ON DUPLICATE密鑰更新值= VALUES(value
) ...
謝謝, 杆
嘿!這是太棒了!!感謝分享這個。我喜歡它:-)我目前正在使用「core_write」和手動更新查詢來達到特定進程的良好性能,但是您剛纔在這裏描述的那個非常棒!再次感謝。竿 – Rod