2012-02-27 14 views

cevap

47

Alan Fırtına bana söylediği gibi: "Eğer db nasıl çalıştığı konusunda bilmeniz gereken değil Sen öğrenmelidir nasıl modeller iş". (Bu tam bir alıntı değil. Size anlamını verdim).

DB yapısını anlamak için kendi planımı oluşturdum. Yani bu ekran nasıl çalıştığını gösteriyor: enter image description here enter image description here

Umut, yardımı olur.

Ayrıca ben bu bağlantılara bakmak tavsiye:

http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

+12

Yikes! Sadece yikes! (ayrıca inanılmaz araştırmalar için +1) – clockworkgeek

+6

Bunları düzgün bir şekilde okumak için yukarıdaki resimlere bağlantılar: http://i.stack.imgur.com/PQsc1.png, http://i.stack.imgur.com/d65bi.png –

2

Ürün Özellikleri tarafından, bir ürüne atayabilirsiniz ve ana EAV tablosunda saklanır ekstra değerler şunlardır ad ve veri daha sonra Ürün Attığınız için birden çok değeriniz varsa, varchar, ondalık, metin Tamsayı, tarih vb. gibi veri türüne bağlı olarak birkaç farklı tabloda depolanır.

ribute, daha sonra, Attribute Options tablolarında, yine veri tipine bağlı olarak farklı tablolarda saklanır.

aşağıdaki bağlantı ilişkileri daha iyi açıklıyor: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

Ve derin geliştiricinin detay: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value

Ve Özellik setleri adından da anlaşılacağı gibi, rastlamak başka şey, nitelik kümesi olacak Birlikte gruplandırılmış. http://www.magentocommerce.com/knowledge-base/entry/how-do-i-create-an-attribute-set

HTH Shaun

+1

teşekkürler Shaun .. linkler faydalı oldu .. – balanv

12

Everytime ı nitelikler eav_attribute saklanır) online Database Diagram Tool

+0

Harika bağlantı Ovidiu ... !! Bunun için +1 ... – balanv

+0

1.9 için böyle bir araç var mı yoksa veritabanı 1,7'den beri değişmedi mi? – TheRealJAG

+0

1.9 için bir bağlantı bulundu http://anna.voelkl.at/magento-ce-1-9-2-2-database-diagram/ – Ovidiu

29

1 bu

kontrol magento db ilişkileri nasıl çalıştığı hakkında bir şeyler öğrenmek istiyorum. Orada attribute_id olsun.

2) Seçenekler eav_attribute_option_value'da depolanır. Orada option_id olsun.

3) Seçenekler catalog_product_entity_varchar ürününe atandı. Orada türüne bağlı olduğu catalog_product_entity_int gibi farklı tablo bir dizi ürünün entity_id 1 ila attribute_id) ve virgül) 2'den

+0

Nitelik kümesi özniteliğe nasıl bağlanır? –

3
SELECT pei.value 
FROM `catalog_product_entity_int` pei 
JOIN `eav_attribute` ea 
ON pei.attribute_id = ea .attribute_id 
WHERE pei.entity_id = {your product_id} 
AND ea.attribute_code = '{your attribute_code}' 

Not option_ids ayrılır değer gerekir Öznitelik, yani diğerlerinden biri uygun olabilir.

2

Bu sorguları, örneğin ürünün renginin siyah olduğunu söyleyen şeyleri bulmak için çok yardımcı olmak üzere buldum.

-- show_product_attr.sql 
select 
    p.entity_id, 
    p.entity_type_id, 
    p.attribute_set_id, 
    p.type_id, 
    p.sku, 
    a.attribute_id, 
    a.frontend_label as attribute, 
    av.value 
from 
    catalog_product_entity p 
    left join catalog_product_entity_{datatype} av on 
     p.entity_id = av.entity_id 
    left join eav_attribute a on 
     av.attribute_id = a.attribute_id 
where 
    -- p.entity_id = 28683 
    -- p.sku = '0452MR' 
    p.entity_id = {eid} 
; 

Ve attr_options

Her iki sorguları için ENTITY_ID ile ilk sorguda ve {bayram} için, vb metin, varchar, int, ondalık ile {veri türü} değiştirmeniz gerekiyor
-- show_product_attr_options.sql 
select 
    p.entity_id, 
    -- p.entity_type_id, 
    -- p.attribute_set_id, 
    p.type_id, 
    p.sku, 
    a.attribute_id, 
    a.frontend_label as attribute, 
    -- a.attribute_code, 
    av.value, 
    ao.* 
from 
    catalog_product_entity p 

    left join catalog_product_entity_int av on 
     p.entity_id = av.entity_id 

    left join eav_attribute a on 
     av.attribute_id = a.attribute_id 
    left join eav_attribute_option_value ao on 
     av.value = ao.option_id 
where 
    -- p.entity_id = 28683 
    p.entity_id = {eid} 
; 

için

. Hangi böyle böyle komuta yapabilirsiniz: sql komut

$ cat show_product_attr_options.sql | sed -e "s/{eid}/30445/" | mysql -uUSER -pPASS DATABASE -t 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 
| entity_id | type_id | sku   | attribute_id | attribute     | value | value_id | option_id | store_id | value    | colorswatch | 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 
|  30445 | simple | 840001179127 |   96 | Status     |  1 |  5972 |   1 |  0 | Male    | NULL  | 
|  30445 | simple | 840001179127 |   102 | Visibility    |  1 |  5972 |   1 |  0 | Male    | NULL  | 
|  30445 | simple | 840001179127 |   122 | Tax Class     |  2 |  5973 |   2 |  0 | Female    | NULL  | 
|  30445 | simple | 840001179127 |   217 | Size      | 257 | 17655 |  257 |  0 | XS     | NULL  | 
|  30445 | simple | 840001179127 |   217 | Size      | 257 | 17657 |  257 |  1 | XS     | NULL  | 
|  30445 | simple | 840001179127 |   224 | Color      | 609 | 18717 |  609 |  0 | Arctic Ice Heather | NULL  | 
|  30445 | simple | 840001179127 |   260 | Featured     |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   262 | Clearance Product   |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   263 | Skip from Being Submitted |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
|  30445 | simple | 840001179127 |   283 | Discontinued    |  0 |  NULL |  NULL |  NULL | NULL    | NULL  | 
+-----------+---------+--------------+--------------+---------------------------+-------+----------+-----------+----------+--------------------+-------------+ 

Benzer bir set katalog için oluşturulabilir.

İlgili konular