2012-08-16 54 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%) 

也許我做錯了什麼與實例,但老實說,你沒有提供一個非常詳細的例子。