【问题标题】:Doctrine - How do you ask WHERE cond1 AND ( cond2 OR cond3)教义 - 你怎么问哪里 cond1 AND ( cond2 OR cond3)
【发布时间】:2026-02-23 01:55:01
【问题描述】:

在 Symfony 项目中使用 Doctrine 时,我遇到了需要应用一个条件,然后是以下两个条件之一的情况(这两个条件都恰好是子查询)。我知道 andWhere() 和 orWhere() 函数,但是在使用它们来生成以下内容时遇到了麻烦: 哪里 cond1 AND ( cond2 OR cond3)

【问题讨论】:

标签: sql symfony1 doctrine


【解决方案1】:

您可以通过 DQL 做到这一点:

$models = Doctrine::getTable('ModelName')
    ->findByDql(
        'field_one = ? AND (field_two = ? OR field_three = ?)',
        array('cond_1','cond_2', 'cond_3')
    );

所以 $models 将是一个包含所有找到的元素的 Doctrine_Collection。

【讨论】:

    【解决方案2】:

    对于 cond2 OR cond3 使用 where

    其中 cond1 和 where cond2 或 where cond3

    希望这能让你开始

    【讨论】:

    • 这似乎有助于子查询部分,但似乎无助于将层次结构添加到我的 AND / OR 运算符,对吧?
    【解决方案3】:

    我没听说过这个工具,但不应该是这样的

    ... where cond1 andWhere (cond2 orWhere cond3)
    

    工作?或者无论实际语法是什么。如果我错了,请随时告诉我,我会删除它并偷偷溜走;)

    【讨论】: