使用DBIx :: Class执行set操作的最佳方式是什么? 我看到一种解决方案是基于我的查询创建结果源,但是我的条件将由用户定义,我不知道最佳答案是否即时创建结果源。在DBIx :: Class中设置操作
基本上我需要把这种类型的查询到DBIC的地方code
,attr_name
和value
由用户定义的:
SELECT pid FROM product WHERE code = 48
INTERSECT
(
(SELECT pid FROM attr WHERE attr_name = 'color' AND value = 'blue'
INTERSECT
SELECT pid FROM attr WHERE attr_name = 'size' AND value = 'big'
)
UNION
(SELECT pid FROM attr WHERE attr_name = 'color' AND value = 'green'
INTERSECT
SELECT pid FROM attr WHERE attr_name = 'size' AND value = 'small'
)
)
当你说用户定义你的意思是可能有多于或少于上面的9个占位符? – cubabit
是的,确切地说。用户可以使用(attr_name,value)和交点和联合对来定义多个过滤器。 – nsbm