我必须列出其类别或类别的产品,我只有产品'SKU由它我需要找到它属于哪个类别,所以我想知道在哪个magento表这个信息留下来.
即:对于sku 52429,它分为3类.该报告将显示所有3个类别树:
Bl>护发>造型产品
Bl>天然有机>护发>定型产品
Bl>我们的品牌> Pureology> Stylers
谢谢!Richa
Magento类别存储在catalog_category_entity
(pk is entity_id
)中.要查找产品和类别之间的关系,请使用catalog_category_product
.它的结构很简单:
+-------------+------------+----------+
| category_id | product_id | position |
+-------------+------------+----------+
| 3 | 5 | 1 |
| 3 | 6 | 1 |
| 3 | 7 | 1 |
+-------------+------------+----------+
Run Code Online (Sandbox Code Playgroud)
因此,要获得产品的所有类别:
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}};
Run Code Online (Sandbox Code Playgroud)
编辑注意您要查找的信息(显示类别树)在类别表中.列的摘录(一些省略):
+-----------+-----------+-------+----------+-------+----------------+
| 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 |
+-----------+-----------+-------+----------+-------+----------------+
Run Code Online (Sandbox Code Playgroud)
您可以使用该path
列上的拆分来获取路径中所有类别的类别ID,并为报告加载其名称.
首先加载产品型号
要么是ID
$product = Mage::getModel('catalog/product')->load($id);
Run Code Online (Sandbox Code Playgroud)
或按属性(SKU)
$product = Mage::getModel('catalog/product')->loadByAttribute('sku', '52429');
Run Code Online (Sandbox Code Playgroud)
现在您可以加载类别ID
$categoryIds = $product->getCategoryIds();
Run Code Online (Sandbox Code Playgroud)
然后获取完整的类别对象
foreach($categoryIds as $categoryId) {
$categories[] = Mage::getModel(’catalog/category’)
->setStoreId(Mage::app()->getStore()->getId())
->load($categoryId);
}
Run Code Online (Sandbox Code Playgroud)
现在获取每个类别的父级
foreach($categories as $category) {
$category->getParentCategory();
}
Run Code Online (Sandbox Code Playgroud)
这就是我想要的一切.