您好,您在 Magento 中创建了一个自定义模型(资源基于 Mage_Core_Model_Resource_Db_Collection_Abstract )。一切都很好。 我尝试对表进行筛选,这将输出以下 where 子句:
where
product_id = 1
and ((customer_id = 0 and customergroup_id = 2) or (customergroup_id = 0 and customer_id = 3))
and ((productgroup_id = 0 and product_class = 8) or (product_class = 0 and productgroup_id = 4))
关于如何使用 addFilter 或其他东西做到这一点有什么想法吗?
最佳答案
addFieldToFilter
/addAttributeToFilter
方法不太适合复杂的查询。您将必须手动构建查询:
$collection->getSelect()
->where('product_id = ?', 1)
->where(sprintf(
'((customer_id = %d AND customergroup_id = %d) OR (customer_id = %d AND customergroup_id = %d))',
0, 2, 3, 0))
->where(sprintf(
'((productgroup_id = %d AND product_class = %d) OR (productgroup_id = %d AND product_class = %d))',
0, 8, 4, 0));
关于mysql - Magento AND/OR 组合模型过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11253853/