Magento 如何通过mysql从厂商值id中获取产品厂商名称?

Magento 如何通过mysql从厂商值id中获取产品厂商名称?,magento,Magento,我知道如何获取产品制造商id,但我需要使用MySQL的产品制造商id和名称 75是获取产品制造商id的属性id 有人能帮忙吗 我希望它是SQL格式的。首先,我想把它弄清楚。 如果将产品作为对象,则可以获得制造商id,如下所示: $product->getManufacturer(); 至于姓名: $product->getAttributeText('manufacturer'); 现在,对于sql部分,我不知道您为什么需要它,但现在开始。 假设产品id为10。 尝试此查询 SE

我知道如何获取产品制造商id,但我需要使用MySQL的产品制造商id和名称

75
是获取产品制造商id的属性id

有人能帮忙吗


我希望它是SQL格式的。

首先,我想把它弄清楚。
如果将产品作为对象,则可以获得制造商id,如下所示:

$product->getManufacturer();
至于姓名:

$product->getAttributeText('manufacturer');
现在,对于sql部分,我不知道您为什么需要它,但现在开始。
假设产品id为10。 尝试此查询

SELECT
    i.value as manufacturer_id,
    v.value as manufacturer_name
FROM 
    catalog_product_entity_int i
    LEFT JOIN 
        eav_attribute_option o 
        ON i.value = o.option_id
    LEFT JOIN
        eav_attribute_option_value v
        ON o.option_id = v.option_id AND
        v.store_id = 0
WHERE 
    i.entity_id = 10 AND
    i.attribute_id = 75 AND 
    i.store_id = 0;
如果您想要其他商店视图的值,只需将
v.store\u id=0
i.store\u id=0
中的0替换为您商店id的值。0表示默认值。

非常好的代码,谢谢

在我的Magento 2.3.1上,我刚刚将属性_id更改为“83”,并添加了SKU。它工作正常

SELECT
e.sku as SKU,
i.value as manufacturer_id,
v.value as manufacturer_name
FROM
catalog_product_entity_int i
LEFT JOIN
eav_attribute_option o
ON i.value = o.option_id
LEFT JOIN
eav_attribute_option_value v
ON o.option_id = v.option_id AND
v.store_id = 0
LEFT JOIN
catalog_product_entity e
ON i.entity_id = e.entity_id
WHERE
i.attribute_id = 83 AND
i.store_id = 0
ORDER BY `SKU`  DESC

我想磁电机有一个固定的模式,或者我们没有机会…非常感谢。我还有一个问题,不是吗?不同商店的价值是唯一的?我不确定我是否理解你的问题,但我还是会试试。在这些字段的组合上,
catalog\u product\u entity\u int
上有一个唯一的索引:
entity\u id
attribute\u id
store\u id
。因此,对于产品和商店id,您可以为
属性\u id
指定一个值。该值在表
catalog\u product\u entity\u int
中没有任何约束,因为每个存储中制造商的实体id和属性id不同,因此该查询无法工作。但是,SQL代码确实命中了
eav\u属性\u选项\u值
,这就是制造商名称所在的位置+1.谢谢你的努力!