我必须列出其类别或类别的产品,我只有产品'SKU我需要找到它属于哪个类别,所以我想知道这个信息留在哪个magento表。
ie:对于sku 52429,它分为3类。该报告将显示所有3个类别树:
Bl>护发>造型产品
Bl>自然与有机>护发>造型产品
Bl&gt;我们的品牌&gt; <纯粹学>造型器
谢谢! Richa
答案 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();
}
这就是我想要的一切。