我的应用程序需要能够以编程方式通过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
如果我可以使用一些过滤器来更有效地完成工作,我认为循环所有内容会有点浪费。
由于
答案 0 :(得分:0)
如果您正在谈论Custom Options
,那么您可以运行自定义查询
如果要检查单个选项标签,请使用以下查询:
$ 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。或者,如果您想检查多个选项,那么:
$ 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方式修改这些查询。我赶时间。)