Magento通过eav选项值

时间:2018-05-09 19:06:30

标签: magento

我们为出生日期创建了自定义客户属性:

dob_month, dob_day

它们是select的前端输入类型,以及int的后端类型。我们正试图从客户那里获取以下字段:entity_iddobstore_id(如果可能的话,一个dob字段,否则分为dob_month和{ {1}})。

我们正在努力,我们希望按这些选项值进行过滤。示例:dob_month = 05和dob_day = 08

我们尝试的所有内容都要么必须按照customer_entity_int中存储的值进行过滤,例如:1125 = eav_option_value为05,否则我们只能检索存储在customer_entity_int中的值。

我认为必须有办法。我们非常感谢您提供的任何帮助。

这是我最接近的地方:

dob_day

注意:PageSize和CurPage仅用于测试以限制结果。

1 个答案:

答案 0 :(得分:0)

如果有人想要它,我得到的最好的就是通过SQL做到这一切:

SELECT e.entity_id,CONCAT(dob_month_eav.value, '-',dob_day.dob_day) as dob,e.store_id FROM customer_entity AS e
LEFT JOIN customer_entity_int AS cv 
ON ( cv.attribute_id = (
    SELECT attribute_id FROM eav_attribute 
    WHERE entity_type_id = e.entity_type_id 
    AND attribute_code = 'dob_month'
    )
AND cv.entity_id = e.entity_id)
LEFT JOIN `eav_attribute_option_value` as `dob_month_eav` ON dob_month_eav.option_id=cv.value 
LEFT JOIN (SELECT e.entity_id,dob_day_eav.value as dob_day,e.store_id FROM customer_entity AS e
LEFT JOIN customer_entity_int AS cv 
ON ( cv.attribute_id = (
    SELECT attribute_id FROM eav_attribute 
    WHERE entity_type_id = e.entity_type_id 
    AND attribute_code = 'dob_day'
    )
AND cv.entity_id = e.entity_id)
LEFT JOIN `eav_attribute_option_value` as `dob_day_eav` ON dob_day_eav.option_id=cv.value) as dob_day ON dob_day.entity_id=e.entity_id
WHERE dob_month_eav.store_id=0 AND dob_month_eav.value='05' AND dob_day='08'