Magento-Kategorien sind in catalog_category_entity
gespeichert (pk ist entity_id
). Verwenden Sie catalog_category_product
, um die Beziehung zwischen einem Produkt und einer Kategorie zu finden. Seine Struktur ist einfach:
+-------------+------------+----------+
| category_id | product_id | position |
+-------------+------------+----------+
| 3 | 5 | 1 |
| 3 | 6 | 1 |
| 3 | 7 | 1 |
+-------------+------------+----------+
Also, alle Kategorien für ein Produkt zu erhalten:
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}};
EDIT zu beachten, dass die Informationen, die Sie suchen (Kategorie Bäume anzuzeigen) ist in die Kategorietabelle selbst. Ein Auszug aus den Spalten (etwas weggelassen):
+-----------+-----------+-------+----------+-------+----------------+
| 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 |
+-----------+-----------+-------+----------+-------+----------------+
Sie Split auf dieser path
Spalte verwenden können, um das Kategorie-IDs aller Kategorien auf dem Weg zu bekommen, und für den Bericht ihre Namen laden.
Danke!Aber wenn diese Methode angewendet wird, wenn ein Produkt eine Kategorie wie bl> skin> face hat, zeigt es zwei Einträge 1) bl> skin und 2) bl> skin> face, haben Sie eine Idee, wie Sie damit umgehen oder dieses Problem beheben. – PHP
Dieses Datenergebnis ist korrekt, wenn das Produkt in beiden Kategorien enthalten ist. Können Sie bitte beschreiben, was Sie in diesem Fall erwarten würden? –
Es sollte nur angezeigt bl> Haut> Gesicht b'cz Gesicht ist die endgültige Unterkategorie (der Haut), welches Produkt gehört. (Warum zeigt es auch Kategorie?) – PHP