【问题标题】:Doctrine: Multiple (whereIn OR whereIn) query?教义:多个(whereIn OR whereIn)查询?
【发布时间】:2011-01-21 13:47:00
【问题描述】:

我在用 Doctrine 制作一个相当简单的查询时遇到了麻烦......

我有两个数组($countries、$cities),我需要检查数据库记录值是否与其中的任何一个匹配。我正在寻找类似的东西:

->whereIn('country', 'city', $countries, $cities)

... 'country' 是 $countries 的 WHERE IN,而 'city' 是 $city 的 WHERE IN。

我可以将两者分开,但所需的查询有很多其他条件,所以这是不可能的。我所追求的结果 SQL 将是:

SELECT ... 
WHERE ... 
AND ...
AND ... 
AND ('country' IN (1,2,3) OR 'city' IN (7,8,9))
AND ... 
AND ...;

因此,人们也可以将其仅视为一个括号问题。任何人都知道这是否可以通过 Doctrine DQL 实现?我浏览了文档,但找不到任何方向。

谢谢

【问题讨论】:

    标签: symfony1 doctrine where-clause dql


    【解决方案1】:

    在对这种废话进行了一个小时的试验之后,下面是使它起作用的语法。

    $q->andWhere('country IN ? OR city IN ?', array(array(1, 2, 3), array(7, 8, 9)));
    

    【讨论】:

      【解决方案2】:

      为什么不使用类似的东西?

      $countryIds=[1,2,3];
      $cityIds=[7,8,9];
      
      $q->whereIn('country',$countryIds)->andWhereIn('city',$cityIds);
      

      此外,将它们链接在一起以获得上下文(大多数 Doctrine 方法返回 $this)。

      http://www.symfony-project.org/doctrine/1_2/en/06-Working-With-Data

      【讨论】:

      • 注意,这与 Doctrine 2 不兼容!
      • 这是相关的,因为这个问题被标记为doctrine 而不是doctrine2
      猜你喜欢
      • 2018-07-28
      • 2017-07-30
      • 2011-11-04
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 2021-02-11
      相关资源
      最近更新 更多