2014-07-03 64 views
0

我的應用程序需要能夠通過網址和選項以編程方式向客戶購物車添加特定產品。我在這裏要求的區域是查看是否有更快(更簡單)的方法在數據庫中找到需要按屬性過濾的匹配產品。Magento:通過url_key查找產品,然後將其與屬性相匹配

例如:我有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

如果你在談論Custom Options那麼你可以運行一個自定義查詢,

  1. 如果你想檢查單選項標籤,然後使用以下查詢:

    $ Q = 「select * from catalog_product_option as cpo left join catalog_product_option_type_value as tv on tv.option_id = cpo.option_id left join catalog_product_option_title as ot onop.option_id = cpo .option_id left join catalog_product_option_type_title as tt on tt.option_type_id = tv.option_type_id where cpo.product_id =「。$ product-> getId()。」and tt.title ='White'and and tt.store_id = 0 and ot .title ='您的選項標題'「;

2。或者,如果你要檢查多個選項,則:

$ Q =「從catalog_product_option選擇tt.title爲CPO 左加入catalog_product_option_type_value電視機上tv.option_id = cpo.option_id 左加入catalog_product_option_title上ot.option_id爲OT = cpo.option_id left join catalog_product_option_type_title as tt on tt.option_type_id = tv.option_type_id where cpo.product_id = 1 and tt.store_id = 0「and ot.title ='Your option title';

您將獲得一組選項標題。你可以簡單地使用in_array函數來檢查你想要的選項是否存在。像

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

相應地更新where條件,並根據Magento的方式修改這些查詢。我很着急:)

相關問題