-- 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}
;
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}'
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)
6条答案
按热度按时间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
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
ulydmbyx3#
我发现这些查询对于查找诸如“产品颜色在哪里是黑色的?”之类的问题非常有帮助。
而对于attr_options
对于第一个查询,您需要将{datatype}替换为text、varchar、int、decimal等,对于两个查询,您需要将{eid}替换为entity_id。您可以在命令中执行此操作,如下所示:
可以为目录创建一组类似的sql脚本。
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肖恩
zf9nrax15#
请注意,根据属性的类型,有许多不同的表(如catalog_product_entity_int),因此其中一个表可能是合适的。
j8yoct9x6#
您可以使用以下查询获取所有产品属性: