mysql - Magento AND/OR 组合模型过滤器

标签 mysql magento orm

您好,您在 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/

相关文章:

url - 由于可能的配置错误,请求超出了 10 个内部重定向的限制

Magento 多商店客户组合登录凭据

java - Spring Boot 加载 orm.xml

java - 如何在 JPA (Hibernate) 中映射 Class<?>

java - 将 java.util.Properties 与 Hibernate 保持一致?

mysql - 在 MySQL 中处理大量数据 - 一次选择多少行?

mysql - mysql root 用户是否总是默认具有所有权限?

mysql - 创建用户、类型和类型标题表之间的关系

php - 在 Magento 的一页结帐的订单审查部分获取账单信息

python - 如何将结果存储到python中的csv文件中