2012-09-11 47 views
1

一個孩子,我檢索該產品屬於喜歡這樣的幫手所有類別ID:Magento的 - 如何檢查一類是另一個

$productCategories = $this->getProduct()->getCategoryIds(); 

這給我的類別ID的數組。就我而言,每個產品只會在一個子類別中。從ID我需要找出邏輯順序基於哪些類別是其中的子項。

目標是創建一種方法,我可以調用並指定產品所需的類別級別,並且它將返回該類別的路徑。

我知道我可以加載像一個類別,以便:

Mage::getModel('catalog/category')->load($categoryId) 

,我知道我在PHP正在做,但只是一個小卡上的邏輯(和方法)用在這裏要達到什麼我想要。

回答

4

最簡單的方法是測試它是否具有與其關聯的父標識。大於0的parent_id表示它是較低級別的類別。如果parent_id等於1,則意味着它比根類別低一級。

$category = Mage::getModel('catalog/category')->load($categoryId) 
echo $category->getParentId(); 

我建議不要使用原始的SQL,因爲它是不好的做法,數據庫架構可能在某一時刻的變化。

+0

如果你知道數據庫是如何工作的,你不需要花費過程來加載所有類別來查找父類,並加載父類來搜索其他父類,需要多少次循環和加載? – Guerra

+3

首先 - 不要因爲答案與你自己的答案不一致而失望 - 這是糟糕的形式。其次 - 使用我描述的方法不會加載除了所需類別之外的任何內容 - 並非所有類別都需要循環。你是新來的Magento?使用模型允許Magento緩存結果並在實例的同一運行中重用。原始查詢每次都會觸及db。 使用API​​是標準的Magento練習 - 避免原始SQL。 http://stackoverflow.com/a/9823256/582138 – philwinkle

相關問題