我正在尝试通过SQL更改所有SIMPLE产品的可见性。
以下是我选择所有可见性属性值的方法:
SELECT * FROM `catalog_product_entity_int` WHERE attribute_id = 102
catalog_product_entity_int
表的entity_id
列是产品实体ID,而value
应该更改为1
所有简单产品。
以下是我选择所有简单产品的方法:
SELECT * FROM `catalog_product_entity` WHERE `type_id`= 'simple'
我不能做的是编写查询,为所有简单产品更新value
catalog_product_entity_int
列。
答案 0 :(得分:4)
您是否有任何理由使用直接sql查询编辑EAV属性?
您可以使用集合甚至管理员后端执行相同操作:目录 - 管理产品 - 键入“简单产品” - 全选 - 操作 - 更新属性 - 可见性
答案 1 :(得分:3)
完全正常工作的查询
UPDATE catalog_product_entity_int CPI INNER JOIN catalog_product_entity CP ON CPI.entity_id = CP.entity_id
SET value = 1
WHERE CPI.attribute_id = 102 AND CP.type_id = 'simple';
答案 2 :(得分:2)
你想使用Magento的一个群众行动。这样仍可以发送适当的事件。
<?php
// Get all simple product ids
$ids = Mage::getResourceModel('catalog/product_collection')
->addAttributeToFilter('type_id', array('eq' => Mage_Catalog_Model_Product_Type::TYPE_SIMPLE))
->getAllIds();
// Update their visibility
Mage::getSingleton('catalog/product_action')->updateAttributes(
$ids,
array("visibility" => Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE),
Mage_Core_Model_App::ADMIN_STORE_ID
);
答案 3 :(得分:1)
因为我的问题,这个简单的代码将适用于你。
我假设这两个表之间的关系是-entity_id
update catalog_product_entity_int set value =1
where attribute_id = 102 and entity_id=
(select entity_id from `catalog_product_entity` where `type_id`= 'simple')
答案 4 :(得分:1)
请按照以下步骤操作。
步骤1:在通过查询进行任何更改之前,您需要对受影响的表或数据库进行备份。在这种情况下,请使用backup(catalog_product_entity_int)表。
步骤2:在eav_attribute表中搜索确切的可见性属性id。
(SELECT * FROM eav_attribute WHERE attribute_code LIKE 'visibility'
)。然后将该值保存在以下查询...
第3步:运行此查询
UPDATE catalog_product_entity_int SET VALUE =2 WHERE attribute_id = 102 AND entity_id IN (SELECT entity_id FROM catalog_product_entity WHERE type_id= 'simple')
答案 5 :(得分:-1)
我认为这个sql命令究竟是:
UPDATE catalog_product_entity_int SET VALUE =2
WHERE attribute_id = 93 AND
entity_id IN (SELECT entity_id FROM catalog_product_entity
WHERE type_id= 'simple')
注意:检查您的attribute_id女巫映射号码