【问题标题】:Doctrine DQL "inclusive or"Doctrine DQL“包容性或”
【发布时间】:2013-11-06 16:28:49
【问题描述】:

我想知道是否有办法在Doctrine DQL中实现简单的“包容性或”?

我可以在 MySQL 中执行以下操作

SELECT * FROM Status WHERE `isGenerated`|`isGeneratable`=:flag;

SELECT * FROM Status WHERE :flag IN (`isGenerated`,`isGeneratable`);

但是这些在 DQL 中都不起作用

解决方案还不能回答我自己的问题:/

SELECT s FROM FooBundle:Status s WHERE BIT_OR(s.isGenerated,s.isGeneratable)=:flag

【问题讨论】:

  • 这些布尔值或数字会超过 1 吗?
  • 布尔值、isGenerated 和 isGeneratable 是 tinyints
  • 最后一个查询有什么问题?我认为这是正确的,因为您是 triggering the column for a specific value
  • s.isGenerated OR s.isGeneratable 有什么问题?这将是执行此操作的标准方法。
  • 有几种方法可以使用您上次执行的查询在教义中使用IN() 函数。

标签: symfony doctrine-orm dql bitwise-or


【解决方案1】:

Doctrine 不支持|,但支持BIT_OR()

解决方案

SELECT s FROM FooBundle:Status s WHERE BIT_OR(s.isGenerated, s.isGeneratable)=:flag

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    相关资源
    最近更新 更多