2

我对 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%

这行不通。我做了一些研究并找到了这篇文章,但每次我尝试在查询中使用“CAST”时都会出错。所以看起来 CAST 不可用。

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

4

1 回答 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%)

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

于 2013-01-19T16:35:44.257 回答