Magento:通过url_key查找产品,然后将其与属性匹配

时间:2014-07-03 19:39:00

标签: php magento magento-1.9

我的应用程序需要能够以编程方式通过URL和选项向客户购物车添加特定产品。我要求的区域是查看是否有更快(更容易)的方法在数据库中查找需要按属性过滤的匹配产品。

例如:我有url_key“男士衬衫”,我希望它在“白色”,“中等”。到目前为止,我一直在寻找与给定过滤器类似的选项,并使用最匹配的产品。但是有更好的方法吗?

一个简短的例子:

$products = Mage::getModel('catalog/product')->
            getCollection()->
            addAttributeToFilter('url_key', $filters['url_key']);

// psuedo code:
        // Check if product has options
        // Loop each option and check the matching label to the desired filters
        // if matching, then use product
        // continue with program

如果我可以使用一些过滤器来更有效地完成工作,我认为循环所有内容会有点浪费。

由于

1 个答案:

答案 0 :(得分:0)

如果您正在谈论Custom Options,那么您可以运行自定义查询

  1. 如果要检查单个选项标签,请使用以下查询:

    $ q ="从catalog_product_option选择*作为cpo 在tv.option_id = cpo.option_id上离开加入catalog_product_option_type_value作为电视 在ot.option_id = cpo.option_id上左加入catalog_product_option_title 在tt.option_type_id = tv.option_type_id上​​将左连接catalog_product_option_type_title作为tt 其中cpo.product_id ="。$ product-> getId()。"和tt.title ='怀特'和tt.store_id = 0和ot.title ='您的选项标题'";

  2. 2。或者,如果您想检查多个选项,那么:

    $ q ="从catalog_product_option选择tt.title作为cpo 在tv.option_id = cpo.option_id上离开加入catalog_product_option_type_value作为电视 在ot.option_id = cpo.option_id上左加入catalog_product_option_title 在tt.option_type_id = tv.option_type_id上​​将左连接catalog_product_option_type_title作为tt 其中cpo.product_id = 1,tt.store_id = 0"和ot.title ='您的选项标题';

    您将获得一系列选项标题。您只需使用in_array函数检查您所需的选项是否存在。像

    if(in_array('White') || in_array('Black')){
       do something.
    }
    

    相应地更新where条件并根据Magento方式修改这些查询。我赶时间。)