当前位置: 首页 > 面试题库 >

Magento批量价格变动

杨景山
2023-03-14
问题内容

我想做的是,某个类别产品的整体价格变化。我们从供应商那里收到建议的零售价格,但有时这些价格对我们不起作用。因此,我们需要考虑产品的成本价格,例如,将20%添加到产品中。.足够容易的成本=成本+
0.2 *成本。现在,我需要对所选类别中的所有产品执行此操作,因此这就是我到目前为止所拥有的…

$category = Mage::getModel('catalog/category')->load(189);

// load products from category id '189'
$products   = Mage::getModel('catalog/product')
                ->getCollection()  
                ->addCategoryFilter($category)  
                ->addAttributeToSelect('id');

foreach($products as $product) { 
    // get the current cost of the product
    $cost = $db->fetchRow("SELECT value FROM `m_catalog_product_entity_decimal` WHERE entity_id='" . $product->getId() . "' AND attribute_id='68'");
    $cost = $cost['value']; 
    $newCost = $cost + $cost*$percentage;

    // update the product with a new cost
    $db->query("UPDATE `m_catalog_product_entity_decimal` SET value='$newCost' WHERE entity_id='" . $product->getId() . "' AND attribute_id='64'"); 
}

现在,我需要使用原始SQL,因为我的php服务器无法处理所有magento产品的加载和保存(Magento
1.4在产品模型中存在内存泄漏)。这就是为什么我只是从产品中选择“
id”以获取最少数据量的原因。我也知道执行所有这些SQL查询会浪费资源,这就是为什么我在这里。如果我的每个类别都只说10个产品,那么我将使用产品模型来更新成本并保存产品,但是有时我一次在每个类别中最多拥有500个或更多产品。

我希望将其压缩为一个SQL查询,并摆脱foreach循环和产品集合。成本属性id是68,价格属性id是64。对此的任何帮助将不胜感激。

编辑
Magento将EAV模型用于他们的数据库。因此,对于我需要访问的属性(即“成本”和“价格”),它们都位于m_catalog_product_entity_decimal

因此产品价格属性在表格中看起来像这样

value_id    entity_type_id  attribute_id    store_id    entity_id   value
6401             4              64             0            2184      399.9500

value_id只是行的唯一值,entity_type_id 4表示这是产品属性。attribute_id与实际属性相关联。在这种情况下,“
price”的attribute_id为64。Store_id无关紧要。Entity_id是实际产品ID,值是该商品的实际价格。


问题答案:

老实说,B00MER的想法正确,但之前我也不得不做类似的事情。另外,我想写一些SQL。如果您只想将类别中所有产品的成本乘以1.2,则可以执行以下操作:

update catalog_product_entity_decimal
  set value = value*1.2
  where attribute_id = 75 and
        entity_id IN (select product_id from catalog_category_product
                    where category_id = X);

您无疑需要重新索引所有内容并检查结果以确保。显然,将X替换为您的目标类别,似乎您使用的表前缀为m_,因此也要附加该前缀(我将其留给来这里的其他搜索者使用)。

希望对您有所帮助!

谢谢乔



 类似资料:
  • 我在Woocommerce下运行我的演示商店,我想将当您选择产品变体时显示的价格移动到数量字段的正下方,而不是介于数量字段和上一个变体之间。 这是我在文件到目前为止,但它不起作用: 我在什么地方出错了吗?

  • 我正试图按价格对产品集合进行排序,但当我添加(粗体)时,这些产品消失了 我想把它们分类,虽然没有存货,但有人知道我能做到吗?

  • 我试图从ajax调用中的ID获取变体的价格。我不明白为什么wc_get_product()返回一个空对象。 下面是我的ajax调用Javascript代码: 这是我的PHP文件,其中$变体返回一个空数组: 返回正确的变量ID(已检查)。

  • 我有一个脚本,可以动态检索我编写的可配置产品的价格,现在我要返回并确保它考虑到可能存在的任何可配置属性。下面是通过ajax调用的,我已经将其调试到循环的最核心部分(因此所有magento方法都可以工作)。它应该删除与属性不匹配的子级。最终目标是只剩下一个孩子,并与价格相呼应。每个孩子确实包含一个独特的价格(这一点我知道)。你能明白为什么这现在不起作用吗?

  • 我需要找到产品的最低和最大价格,这样我就可以用它来设置我的价格过滤器的范围。我在catalog/model/layer/filter/price.php中使用了getMaxPriceInt()和getMinPriceInt()方法。但是返回的值基于'min_price'字段。 如何根据final_price找出集合中产品的最低和最高价格?也就是说,如果集合中有4个产品(我只登记需要的字段) get

  • 在我们的woocommerce网站上,我试图根据客户从下拉菜单中选择的变化来更新显示的价格,如下所示: 我使用了LoictheAztec在另一个答案中提交的php函数: 用WooCommerce 3中选择的Variable Price替换Variable Price range 但是,当选择一个变体时,它会在FROM:$PRICE下面显示未定义,如下所示: 未定义错误示例: 因此,如果有人能帮助我