回答

收藏

Magento批量价格变化

技术问答 技术问答 223 人阅读 | 0 人回复 | 2023-09-14

我想做的是某一类产品的整体价格变化。我们从供应商那里收到了建议的零售价格,但有时这些价格对我们没有影响。因此,我们需要考虑产品的成本和价格,例如20%添加到产品中。.成本足够简单=成本
5 e, C  q* G  I2 o/ q0.2 *成本。现在,我需要对所选类别中的所有产品进行操作,所以这就是我到目前为止所拥有的…
. W2 X5 m1 S' O$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
) N+ V0 _# @5 `' H1.4产品模型中存在内存泄漏)。这就是为什么我只是从产品中选择4 G* n6 m0 a. ~9 _" A
id为了获得最少数据量。我也知道如何执行所有这些SQL查询会浪费资源,这就是为什么我在这里。如果我每个类别只说10个产品,我会用产品模型更新成本,保存产品,但有时我每个类别最多有500个或更多的产品。
! w( p! K( m- y! p! G$ _我希望将其压缩为一个SQL查询,摆脱foreach循环和产品集合。成本属性id是68,价格属性id是64。对此的任何帮助都将不胜感激。  v+ J7 [& k; `% h
编辑3 B) C2 B  A8 N$ V9 D6 \
Magento将EAV模型用于他们的数据库。因此,它们都位于我需要访问的属性(即成本和价格)m_catalog_product_entity_decimal" j6 j" b( j$ g- }6 B! @4 C
因此,产品的价格属性在表格中看起来像这样
: U5 `/ o4 l5 I  H" c8 vvalue_id    entity_type_id  attribute_id    store_id    entity_id   value6401                                                              2184      3994                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        .9500value_id只是行的唯一值,entity_type_id 4表示这是产品属性。attribute_id与实际属性有关。+ R/ a6 X- x/ K, r
price”的attribute_id为64。Store_id无关紧要。Entity_id是实际产品ID,价值是商品的实际价格。
$ G- g2 K7 ]) q                                                                & e; ?, u8 Q9 x
    解决方案:                                                                7 o* h. {( [* w/ U
                                                                老实说,B00MER我的想法是正确的,但我以前必须做类似的事情。另外,我想写一些SQL。如果你只想乘以类别中所有产品的成本1.2.可执行以下操作:
4 z2 r* f/ \1 ]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_,所以这个前缀也要附加(我把它留给这里的其他搜索者)。
4 M$ w: _' o+ m! S+ h1 @希望对你有所帮助!- x/ K$ a9 [. U  ~* u
谢谢乔
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则