首页 文章

Magento,以编程方式使用SQL在脚本中向产品添加类别

提问于
浏览
5

我正在确定以编程方式将类别添加到产品的最佳方法 . 类别是从magento安装之外的第三方数据获得的,然后我解析这些数据并想要更新magento:“catalog_category_product”表,将找到的类别与其各自的产品相关联 .

在“catalog_category_product”中将类别添加到产品关联作为测试后,该类别未显示在magento前端站点上 . 经过更多搜索后,我在“catalog_category_product_index”表中添加了一个条目,该产品现在显示在前端站点的正确类别中 .

这一切都是必要的吗?我担心还有额外的magento事件挂钩绑定到产品和类别,他们可能正在更新我不知道的其他表 .

我可以使用SQL向这两个表添加行而不会发生意外,或者我是否需要加载magento应用程序并通过EAV产品和类别模型执行此操作?我在正确的轨道上吗?

Update

我实际上并没有“导入”任何新数据 . 产品和类别已在系统中就位 . 我还没有添加任何自定义观察者,并且正在使用vanilla Products和Categories模型 .

我正在解析文本文件以获取正确的值,然后使用纯SQL UPDATE语句 .

我只想确保通过这条路线,我需要以编程方式更新的唯一表是'catalog_category_product'和'catalog_category_product_index' .

2 回答

  • 0

    我个人不建议您使用纯SQL,而是使用API,如:

    define('MAGENTO', realpath(dirname(__FILE__)));
    require_once MAGENTO . '/app/Mage.php';
    Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
    
    // Load products 
    $products = Mage::getModel('catalog/product')
                ->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID)
                ->getAll();
    
    // Load categories
    $category = Mage::getModel('catalog/category');
                ->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID);
    $categories = $category->getAll();
    foreach($products as $product) {
        // Get relevant category 
        $product->setCategoryIds(array($category->getId()));
        $product->save();
    }
    

    上面的代码是非常粗略的例子,但很少有调整应该做的工作 . 如果您使用纯SQL,则可能会破坏您的数据或关系,但使用API Magento应该适合您 .

  • 4

    如何链接您的类别和产品?你有没有具体的代码?如果是:显示一些代码 .

    无论如何,magento提供了许多方法来完成STANDARD所需的操作 . 查看菜单中的Backoffice:System / Imports-Exports

    magento中有2种不同的方法:

    • 数据流配置文件:它适用于模型并且非常慢(但是通过在所有模型上调用 - > save()和 - > load(),它确保您调用的任何Observer都将被调用!!)

    • 新的Imports / Exports配置文件:它适用于纯SQL查询并且非常快(但它是硬编码的...所以...再见你添加的任何加载/保存自定义观察者)

    就像你说的那样,Magento得到了与产品和类别(以及所有其他模型)相关的事件挂钩 . 例如,在产品和类别的保存后回调中,magento将重新索引所有关联的INDEXES,例如您尝试手动添加的catalog_category_index .

    所以:

    • 不要自己动手,使用magento导入/导出配置文件,数据流配置文件或API .

    • 取决于您拥有的产品/类别的数量,选择正确的导入使用(参见上面的差异) . 数据流速度较慢但使用的是模型..

相关问题