【发布时间】:2011-01-04 05:56:56
【问题描述】:
我必须列出产品及其类别或类别,我只有产品的 SKU 我需要找到它属于哪个类别,所以我想知道该信息保存在哪个 magento 表中。
ie:对于 sku 52429,它分为 3 类。该报告将显示所有 3 个类别树:
Bl > 头发护理 > 造型产品
Bl > Natural & Organic > 护发 > 造型产品
Bl > 我们的品牌 > Pureology > Stylers
谢谢! 里查
【问题讨论】:
我必须列出产品及其类别或类别,我只有产品的 SKU 我需要找到它属于哪个类别,所以我想知道该信息保存在哪个 magento 表中。
ie:对于 sku 52429,它分为 3 类。该报告将显示所有 3 个类别树:
Bl > 头发护理 > 造型产品
Bl > Natural & Organic > 护发 > 造型产品
Bl > 我们的品牌 > Pureology > Stylers
谢谢! 里查
【问题讨论】:
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 列上使用 split 来获取路径中所有类别的类别 ID,并为报告加载它们的名称。
【讨论】:
首先加载产品模型
根据 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();
}
我想这就是你所需要的。
【讨论】: