2011-01-04 16 views
7

मुझे अपनी श्रेणी या श्रेणियों के साथ उत्पादों को सूचीबद्ध करना है, मेरे पास केवल उत्पाद 'एसकेयू है, मुझे यह पता होना चाहिए कि यह किस श्रेणी से संबंधित है, इसलिए मैं जानना चाहता हूं कि यह जानकारी किस Magento तालिका में रहती है।Magento उत्पाद की श्रेणी

यानी: स्कू 52429 के लिए, इसे 3 श्रेणियों में वर्गीकृत किया गया है। रिपोर्ट सभी 3 श्रेणी के पेड़ आएगा:

नीला> बालों की देखभाल> स्टाइलिंग उत्पादों

नीला> प्राकृतिक & कार्बनिक> बालों की देखभाल> स्टाइलिंग सामग्री

नीला> हमारे ब्रांड> Pureology> Stylers

धन्यवाद! ऋचा

उत्तर

8

Magento श्रेणियां catalog_category_entity (पीके entity_id) में संग्रहीत हैं। किसी उत्पाद और श्रेणी के बीच संबंध ढूंढने के लिए, catalog_category_product का उपयोग करें।

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}}; 

संपादित ध्यान दें कि जानकारी आप देख रहे हैं (श्रेणी पेड़ प्रदर्शित करने के लिए) में है: एक उत्पाद के लिए सभी श्रेणियों प्राप्त करने के लिए,

+-------------+------------+----------+ 
| category_id | product_id | position | 
+-------------+------------+----------+ 
|   3 |   5 |  1 | 
|   3 |   6 |  1 | 
|   3 |   7 |  1 | 
+-------------+------------+----------+ 

तो: इसकी संरचना सरल है श्रेणी तालिका स्वयं। स्तंभों की एक अंश (कुछ छोड़े गए):

+-----------+-----------+-------+----------+-------+----------------+ 
| 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 स्तंभ पर विभाजन का उपयोग कर सकते हैं, और रिपोर्ट के लिए उनके नाम को लोड। प्रयास और अच्छे दृष्टिकोण के लिए

+0

धन्यवाद!लेकिन इस विधि को लागू करने से, यदि किसी उत्पाद में ब्लू> त्वचा> चेहरे की तरह श्रेणी होती है, तो यह दो प्रविष्टियों को दिखाती है 1) bl> त्वचा और 2) bl> त्वचा> चेहरे, क्या आपको कोई विचार है कि इसे कैसे संभालें या इस समस्या को ठीक करें। – PHP

+0

यदि उत्पाद दोनों श्रेणियों में है तो वह डेटा परिणाम सही है। क्या आप कृपया इस मामले में क्या देखने की उम्मीद करेंगे, इसका वर्णन कर सकते हैं? –

+0

इसे केवल ब्लू> त्वचा> फेस बी'केज़ चेहरे को अंतिम उपश्रेणी (त्वचा का) प्रदर्शित करना चाहिए, जो उत्पाद संबंधित है। (यह श्रेणी क्यों दिखा रहा है?) – PHP

7

पहले भार को उत्पाद मॉडल

या तो आईडी के आधार पर

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

या विशेषता के आधार पर (SKU)

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

अब आप श्रेणी आईडी लोड कर सकते हैं

$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(); 
} 

की मूल पाने के लिए यह आप सभी की जरूरत है मुझे लगता है कि प्राप्त करने के लिए।

+0

+1, लेकिन मुझे किसी भी श्रेणी को लाने के लिए सभी संबंधित तालिका जाननी है क्योंकि मुझे सीधे mysql द्वारा magento डेटाबेस तक पहुंचना है। – PHP

+1

मैं इसकी अनुशंसा नहीं करता। लेकिन मैं आपको शुभकामनाएं देता हूं! यदि आप सफल होते हैं तो समाधान पोस्ट करें, यह शायद दूसरों के लिए दिलचस्प होगा। Magento संसाधन मॉडल तक पहुंचकर ऐसा करने का एक और तरीका है जो शायद तेज़ी से और/या बेहतर काम करेगा। लेकिन मुझे इसे समझने के लिए अभी समय नहीं मिला है। –

संबंधित मुद्दे