产品属性和属性选项是如何存储在Magento数据库中的?

8dtrkrch  于 2022-11-12  发布在  其他
关注(0)|答案(6)|浏览(190)

我试图弄清楚属性和属性选项之间的联系,以及产品和属性之间的联系是如何在Magento中建立的。有没有任何参考资料说明这是如何工作的?或者有人给予我一个提示。
谢谢你,
巴兰

ugmeyewa

ugmeyewa1#

正如艾伦·斯托姆所说:“你不必知道你的数据库是如何工作的。你必须学习模型是如何工作的“。(这不是一个确切的引用。我给了你的意思)。
但是我创建了自己的方案来理解DB结构。所以这个屏幕显示了它是如何工作的:

希望,这有帮助。
我也建议你通过这些链接看看:
http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram
http://alanstorm.com/magento_advanced_orm_entity_attribute_value_part_1

ni65a41a

ni65a41a2#

1)这些属性存储在eav_attribute中,这样就得到了attribute_id
2)选项存储在eav_attribute_option_value中。在那里,您可以得到option_id
3)选项分配给catalog_product_entity_varchar中的产品。您需要产品的entity_id、1)中的attribute_id和2)中的逗号分隔的值option_ids

ulydmbyx

ulydmbyx3#

我发现这些查询对于查找诸如“产品颜色在哪里是黑色的?”之类的问题非常有帮助。

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

而对于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}
;

对于第一个查询,您需要将{datatype}替换为text、varchar、int、decimal等,对于两个查询,您需要将{eid}替换为entity_id。您可以在命令中执行此操作,如下所示:

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

可以为目录创建一组类似的sql脚本。

tzdcorbm

tzdcorbm4#

产品属性是您可以分配给产品的额外值,它按名称存储在主EAV表中,然后根据数据类型(如varchar、decimal、text、Integer、date等)将数据存储在几个不同的表中。
如果产品属性有多个值,则这些值将存储在“属性选项”表中,同样,根据数据类型存储在不同的表中。
下面的链接更好地解释了这些关系:http://www.magentocommerce.com/wiki/2_-_magento_concepts_and_architecture/magento_database_diagram
更深入的开发人员详细信息:http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-7-advanced-orm-entity-attribute-value
属性集是你遇到的另一个东西,顾名思义,是一组属性组合在一起。http://www.magentocommerce.com/knowledge-base/entry/how-do-i-create-an-attribute-set
HTH肖恩

zf9nrax1

zf9nrax15#

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

请注意,根据属性的类型,有许多不同的表(如catalog_product_entity_int),因此其中一个表可能是合适的。

j8yoct9x

j8yoct9x6#

您可以使用以下查询获取所有产品属性:

SELECT CPEV.entity_id, CPE.sku, EA.attribute_id, EA.frontend_label, CPEV.value
    FROM catalog_product_entity_varchar AS CPEV 
    INNER JOIN catalog_product_entity AS CPE ON CPE.entity_id = CPEV.entity_id
    INNER JOIN eav_attribute AS EA ON(CPEV.attribute_id = EA.attribute_id AND EA.entity_type_id = 4)
    INNER JOIN catalog_eav_attribute AS CEA ON(CEA.attribute_id = EA.attribute_id AND CEA.is_visible_on_front = 1 AND CEA.is_visible_in_grid = 1)

相关问题