2012-08-16 49 views
2

我使用class table inheritance来处理symfony2项目数据库中的一些表。我有一些关于我的超类的外键的关系表。超类的WHERE语句中的子类属性

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

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语句中使用子类属性?

回答

0

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

例如为:

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

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