Php 将产品价格设置为等于所有简单产品的特殊价格

Php 将产品价格设置为等于所有简单产品的特殊价格,php,sql,magento,magento-1.9,magmi,Php,Sql,Magento,Magento 1.9,Magmi,我知道这是一个特定于框架的问题,并不是一个真正的一般编程问题,但我已经在上个月问了这个问题,但没有得到任何回应 我想用特价代替我所有简单产品的正常价格(特价将不再存在)。我对Magento很陌生,我不知道做这件事最好的方法是什么 我在考虑一个SQL查询来替换这些值,然后找到一种方法来禁用不再打折的产品的特价 我还认为我可以使用导入/导出工具导出包含所有折扣简单产品的列表,在Excel中更改它们的属性,然后使用Magmi导入新的csv,但是默认的Magento导入/导出工具对我来说不太好(同一SK

我知道这是一个特定于框架的问题,并不是一个真正的一般编程问题,但我已经在上个月问了这个问题,但没有得到任何回应

我想用特价代替我所有简单产品的正常价格(特价将不再存在)。我对Magento很陌生,我不知道做这件事最好的方法是什么

我在考虑一个SQL查询来替换这些值,然后找到一种方法来禁用不再打折的产品的特价

我还认为我可以使用导入/导出工具导出包含所有折扣简单产品的列表,在Excel中更改它们的属性,然后使用Magmi导入新的csv,但是默认的Magento导入/导出工具对我来说不太好(同一SKU有多行)

我有没有办法安全地做这件事?Magmi是否能够禁用我的产品的所有特价

我的Magento版本是Magento 1.9


谢谢大家!

我个人喜欢使用Magento shell脚本。您可以在
shell
dir下找到一些示例

一旦创建了一个,您可以简单地使用以下命令调用它:

php shell/.php

通过这种方式,您可以访问Magento的ORM,并且可以以更安全的方式完成此任务

实现这样的cli脚本应该很容易,但如果您需要帮助,这里有未测试的版本:)


太棒了,谢谢!我认为这种方法比我所想的解决方案更优雅,我会尽快尝试这种方法:)祝你好运…;)呜呼!:)别忘了标出正确答案
<?php

require_once 'abstract.php';

class Mage_Shell_SpecialPrice extends Mage_Shell_Abstract
{
    public function run()
    {
        if ($this->getArg('help')) {
            echo $this->usageHelp();
            return;
        }

        $collection = $this->_getProductCollection();

        /** @var Mage_Catalog_Model_Product $product */
        foreach ($collection as $product) {
            $product->setPrice($product->getSpecialPrice())
                ->setSpecialPrice(null);

            $product->getResource()->saveAttribute($product, 'price');
            $product->getResource()->saveAttribute($product, 'special_price');
        }
    }

    /**
     * @return Mage_Catalog_Model_Resource_Product_Collection
     */
    protected function _getProductCollection()
    {
        return Mage::getResourceModel('catalog/product_collection')
            ->addAttributeToFilter('special_price', array('notnull' => true))
            ->setOrder($this->getArg('limit') ?: 'created_at', $this->getArg('dir') ?: 'desc')
            ->setPageSize($this->getArg('limit') ?: 20);
    }

    /**
     * @return string
     */
    public function usageHelp()
    {
        return <<<USAGE
Usage:  php -f special-price.php
        php -f special-price.php --limit 20 --sort created_at --dir desc
USAGE;
    }
}

$shell = new Mage_Shell_SpecialPrice();
$shell->run();