使用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