【问题标题】:Subclass attribute in WHERE statement of a superclass超类的 WHERE 语句中的子类属性
【发布时间】:2012-08-16 15:47:36
【问题描述】:

我将class table inheritance 用于我的 symfony2 项目数据库中的一些表。我的超类有一些带有外键的关系表。

现在我想编写一个从我的关系表开始并加入超类的查询。如果我想将记录过滤到子类中,我只需要这样写:

SELECT r, c
FROM
BasicBundle:RelationEntity r
JOIN r.superclassId c
WHERE
c INSTANCE OF BasicBundle:Subclass

我的问题是我还想设置一个带有子类属性的 WHERE 子句,如下所示:

WHERE
c INSTANCE OF BasicBundle:Subclass
AND
c.subclassAttribute LIKE %example%

这不起作用。我做了一些研究,发现this article 但每次我尝试在查询中使用“CAST”时都会出错。所以看起来 CAST 不可用。

有人知道如何在超类查询的 WHERE 语句中使用子类属性吗?

【问题讨论】:

    标签: sql symfony doctrine-orm dql symfony-2.1


    【解决方案1】:

    您为什么不尝试使用子查询?

    例如:

    WHERE
    c INSTANCE OF BasicBundle:Subclass
    AND EXISTS 
      (SELECT x FROM BasicBundle:Subclass s 
       WHERE s.id = c.id AND s.subclassAttribute LIKE %example%)
    

    也许我在实例上做错了什么,但老实说你没有提供一个非常详细的例子。

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      相关资源
      最近更新 更多