2012-02-27 20 views

Odpowiedz

47

Jak Alan Burza powiedział mi: „jeszcze nie wiedzieć o tym, jak działa Twój db powinien się dowiedzieć, w jaki sposób praca modele”. (To nie jest dokładny cytat, podałem ci znaczenie).

Ale stworzyłem własny schemat, aby zrozumieć strukturę DB. Więc ten ekran pokazuje, jak to działa: enter image description here enter image description here

Hope, to pomaga.

Również polecam przejrzeć tych linków:

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! Po prostu yikes! (także +1 za niesamowite badania) – clockworkgeek

+6

Linki do powyższych zdjęć, aby je poprawnie przeczytać: http://i.stack.imgur.com/PQsc1.png, http://i.stack.imgur.com/d65bi.png –

2

Atrybuty produktu są dodatkowe wartości, które można przypisać do danego produktu i jest przechowywana w głównej tabeli EAV, przez nazwa, a dane są następnie przechowywane w kilku różnych tabelach na podstawie typu danych, takich jak varchar, dziesiętny, tekst Integer, data itd.

jeśli masz wiele wartości dla swojego ribute, to będzie przechowywane w tabelach Attribute Options, ponownie, różne tabele w oparciu o typ danych.

ten Link wyjaśnia relacje lepiej: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

i szczegółów głębiej dewelopera: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value

i atrybut zestawy będą inne rzeczy można natknąć się, jak sama nazwa wskazuje, zestaw atrybutów zgrupowane razem. http://www.magentocommerce.com/knowledge-base/entry/how-do-i-create-an-attribute-set

HTH Shaun

+1

dzięki Shaun .. linki były przydatne .. – balanv

12

Everytime Chcę wiedzieć coś o tym, jak działa Magento stosunki db to sprawdzić

online Database Diagram Tool

+0

Fajny link Ovidiu ... !! +1 dla tego ... – balanv

+0

Czy istnieje narzędzie takie jak to dla 1.9 lub czy baza danych nie zmieniła się od 1.7? – TheRealJAG

+0

Znalazłem link do 1.9 http://anna.voelkl.at/magento-ce-1-9-2-2-database-diagram/ – Ovidiu

29

1) atrybuty są przechowywane w eav_attribute. Tam otrzymasz attribute_id.

2) Opcje są przechowywane pod numerem eav_attribute_option_value. Tam dostaniesz option_id.

3) Opcje są przypisane do produktu w catalog_product_entity_varchar. Nie trzeba się entity_id o produkcie, attribute_id od 1) i wartości, które są oddzielone przecinkami option_ids od 2)

+0

Jak zestaw atrybutów jest powiązany z atrybutem? –

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

Należy pamiętać, że istnieje wiele różnych tabel jak catalog_product_entity_int w zależności od rodzaju atrybut, więc jeden z tych innych może być odpowiedni.

2

Znalazłem te zapytania, które są bardzo pomocne w polowaniu na takie rzeczy jak - gdzie jest napisane, że kolor produktu jest czarny ?, na przykład.

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

I attr_options

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

Trzeba zastąpić {typ danych} z tekstu, varchar, int, dziesiętny, etc, na pierwszej kwerendy i {eid} z ENTITY_ID zarówno zapytaniami. Które można wykonać na komendzie w ten sposób:

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

Podobny zestaw skryptów sql można utworzyć dla katalogu.

Powiązane problemy