找到数据在数据库中的存储位置,结果直接修改了数据库。
$groupsDisabledArray 是一个数组,其中包含我要为其禁用产品权限的每个组的 ID。 magento 中的数据只是以逗号分隔的 Group ID 列表形式存储
例子:
1,2,3,4,5,6,7,8,9,10
所以我内爆了我禁用的组 ID 的数组以获得逗号分隔的列表
$groupsList=implode(",", $groupsDisabledArray);
然后插入或更新存储值的 catalog_product_entity_text 表。
值存储在 catalog_product_entity_text 中
entity_id = PRODUCT_ID
attribute_id = 155 (This corresponds to the table eav_attribute where attribute_code = 'aw_cp_disable_product')
entity_type_id = 4 (This corresponds to table eav_entity_type where entity_type_code = 'catalog_product')
store_id = STORE_ID (If you just have one store you should just be able to put 0 here for the Default Store)
执行以下完整更新的代码。可能需要更新 Mage.php 的路径,具体取决于您放置脚本的位置。
include("/app/Mage.php");
/* Get DB Connections */
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$writeConnection = $resource->getConnection('core_write');
$tableName = $resource->getTableName('catalog_product_entity_text');
/* $groupsDisabledArray - Array of all of the Magento Group ID's I want to disable this product for */
$groupsList=implode(",", $groupsDisabledArray);
$sql="SELECT * FROM $tableName WHERE entity_id=$product_id AND attribute_id=155 and entity_type_id=4 AND store_id=0;";
$results = $readConnection->fetchAll($sql);
if (count($results) > 0) {
$sql="UPDATE $tableName SET value='$groupsList' WHERE entity_id=$product_id AND attribute_id=155 and entity_type_id=4 AND store_id=0;";
}
else
{
$sql="INSERT INTO $tableName (entity_id, entity_type_id, store_id, attribute_id, value) VALUES ($product_id, 4, 0, 155, '$groupsList')";
}
$writeConnection->query($sql);