Magento产品类别

时间:2011-01-04 05:56:57

标签: mysql magento

我必须列出其类别或类别的产品,我只有产品'SKU我需要找到它属于哪个类别,所以我想知道这个信息留在哪个magento表。

ie:对于sku 52429,它分为3类。该报告将显示所有3个类别树:

Bl>护发>造型产品

Bl>自然与有机>护发>造型产品

Bl&gt;我们的品牌&gt; <纯粹学>造型器

谢谢! Richa

2 个答案:

答案 0 :(得分:8)

Magento类别存储在catalog_category_entity中(pk为entity_id)。要查找产品和类别之间的关系,请使用catalog_category_product。它的结构很简单:

+-------------+------------+----------+
| category_id | product_id | position |
+-------------+------------+----------+
|           3 |          5 |        1 |
|           3 |          6 |        1 |
|           3 |          7 |        1 |
+-------------+------------+----------+

因此,要获得产品的所有类别:

select cc.* from catalog_category_entity cc
   join catalog_category_product cp on cc.entity_id = cp.category_id
   where cp.product_id = {{your product id}};

编辑注意您要查找的信息(显示类别树)位于类别表中。列的摘录(一些省略):

+-----------+-----------+-------+----------+-------+----------------+
| entity_id | parent_id | path  | position | level | children_count |
+-----------+-----------+-------+----------+-------+----------------+
|         1 |         0 | 1     |        0 |     0 |             65 |
|         2 |         1 | 1/2   |        1 |     1 |             64 |
|         3 |         2 | 1/2/3 |        1 |     2 |              9 |
|         4 |         2 | 1/2/4 |        2 |     2 |             18 |
|         5 |         2 | 1/2/5 |        3 |     2 |              9 |
+-----------+-----------+-------+----------+-------+----------------+

您可以在path列上使用拆分来获取路径中所有类别的类别ID,并为报告加载其名称。

答案 1 :(得分:7)

首先加载产品型号

通过ID

$product = Mage::getModel('catalog/product')->load($id);

或按属性(SKU)

$product = Mage::getModel('catalog/product')->loadByAttribute('sku', '52429');

现在您可以加载类别ID

$categoryIds = $product->getCategoryIds();

然后获取完整的类别对象

foreach($categoryIds as $categoryId) { 
  $categories[] = Mage::getModel(’catalog/category’) 
    ->setStoreId(Mage::app()->getStore()->getId()) 
    ->load($categoryId);
}

现在获取每个类别的父级

foreach($categories as $category) {
  $category->getParentCategory();
}

这就是我想要的一切。