2011-01-04 26 views
7

私はそのカテゴリーまたはカテゴリーで製品をリストアップする必要があります。私は商品のSKUしか持っていません。どのカテゴリーに属するのかを調べる必要があるので、この情報がどのマゼンタのテーブルにあるか知りたいと思います。Magento製品のカテゴリー

ie:for sku 52429は3つのカテゴリに分類されます。

B1を>ヘアケア>スタイリング製品

B1を>ナチュラル&オーガニック>ヘアケア>スタイリング製品

B1を>ブランド紹介> Pureology>スタイラ

:レポートにはすべての3カテゴリツリーを表示します

ありがとう! Richa

答えて

8

マゼンタカテゴリは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}}; 

EDITをカテゴリテーブル自体列の抜粋(一部省略):

+-----------+-----------+-------+----------+-------+----------------+ 
| 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 | 
+-----------+-----------+-------+----------+-------+----------------+ 

あなたは、パス内のすべてのカテゴリのカテゴリIDを取得し、レポートのために自分の名前をロードするためにそのpath列に分割を使用することができます。

+0

ありがとう!このメソッドを適用すると、bl> skin> faceのようなカテゴリを持つ商品があれば、1)bl> skinと2> bl> skin> faceの2つの項目が表示されます。 – PHP

+0

製品が両方のカテゴリにある場合、そのデータ結果は正しいです。この場合、あなたが見たいと思われるものを記述してください。 –

+0

これは、bl> skin> face b'czのみを表示する必要があります。faceは、製品が属する最終的なサブカテゴリ(スキン)です。 (なぜカテゴリも表示されますか?) – PHP

7

ID

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

や属性によって(SKU)

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

による最初のロードアップ製品モデル

のどちらかを今、あなたはカテゴリIDに

$categoryIds = $product->getCategoryIds(); 
を読み込むことができます

は、その後、完全なカテゴリがこれを使用すると、私は考える必要があるすべてである各カテゴリ

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

の親を取得するには今すぐ

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

オブジェクトを取得します。

+0

+1努力と良いアプローチしかし、私はmysqlによってmagentoデータベースに直接アクセスする必要があるため、関連するすべてのテーブルを知る必要があります。 – PHP

+1

私はそれをお勧めしません。しかし、私はあなたに幸運を祈っています!成功すれば解決策を投稿すれば、他の人にとってはおそらく面白いだろう。もちろん、より速く、かつ/またはより良く動作するマゼンタリソースモデルにアクセスすることによって、それを行う別の方法もあります。しかし、私は今それを把握する時間がありません。 –

関連する問題