Comment les attributs de produit et les options d'attribut sont-ils stockés dans la base de données Magento?

j'essaie de comprendre comment le lien entre les options d'attribut et d'attribut, et le produit et les attributs est fait dans Magento. Est-il référence à la façon dont cela fonctionne? ou quelqu'un me donner un indice sur cette.

Merci,

Balan

30
demandé sur balanv 2012-02-27 14:37:46

6 réponses

comme me l'a dit Alan Storm: "vous n'avez pas besoin de savoir comment fonctionne votre base de données. Vous devriez apprendre comment les modèles fonctionnent". (Ce n'est pas une citation exacte. Je vous ai donné le sens).

mais j'ai créé propre schéma pour comprendre la structure de DB. Donc cet écran montre comment cela fonctionne: enter image description hereenter image description here

j'Espère, ça aide.

je vous recommande aussi de regarder à travers ces liens:

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

http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

52
répondu Anthony 2012-02-27 10:54:05

1) Les attributs sont stockés dans eav_attribute. Là vous obtenez le attribute_id.



2) Les options sont stockées dans eav_attribute_option_value. Il y yout obtenir le option_id.



3) Les options sont attribuées au produit catalog_product_entity_varchar. Là, vous avez besoin de la entity_id du produit, le attribute_id à partir de 1) et de la valeur qui sont séparées par des virgules option_ids à partir de 2)

31
répondu Martin Sedlmeier 2016-05-18 10:33:48

Chaque fois que je veux savoir quelque chose au sujet de comment magento db relations œuvres-je vérifier cette

outil de diagramme de base de données en ligne

12
répondu Ovidiu 2012-02-28 13:07:41
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}'

Notez qu'il existe un certain nombre de différentes tables comme catalog_product_entity_int selon le type de l'attribut, donc l'une de celles les autres pourrait être approprié.

3
répondu colmde 2015-09-22 15:17:17

j'ai trouvé ces requêtes pour être très utile pour traquer des choses comme - Où est-il dit la couleur du produit est noir?, exemple.

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

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

Vous devez remplacer {type} avec text, varchar, int, virgule, etc, pour la première requête, et {l'aïd} avec entity_id pour les deux requêtes. Qui que vous pouvez faire sur la commande comme ceci:

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

un ensemble similaire de scripts sql peut être créé pour le catalogue.

3
répondu dlink 2016-09-09 21:10:20

les attributs de produit sont des valeurs supplémentaires que vous pouvez assigner à un produit et est stocké dans la table EAV principale, par nom, et les données sont ensuite stockées dans quelques tables différentes basées sur le type de données, comme varchar, décimal, texte entier, date, etc.

si vous aviez plusieurs valeurs pour votre Attribut produit, alors cela sera stocké dans les tables D'options D'attribut, encore une fois, différentes tables basées sur le type de données.

le lien suivant explique les relations mieux: http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram

et plus de détails sur le développeur: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value

Et les ensembles d'attributs sera autre chose que vous venez à travers, comme son nom l'indique, un ensemble d'attributs regroupés. http://www.magentocommerce.com/knowledge-base/entry/how-do-i-create-an-attribute-set

HTH Shaun

2
répondu ShaunOReilly 2012-02-27 12:00:12