我有一個DQL查詢和實體專業化的問題。Doctrine DQL,類表繼承和訪問子類字段
我有一個實體叫Auction
,這是OneToOne
與Item
的關係。 Item
是Film
和Book
的mappedSuperclass
。我需要一個可以支持搜索引擎的查詢,允許用戶查找具有不同屬性的不同屬性AND
的拍賣(這是AND
部分,使其具有挑戰性)。
問題是,即使Auction
有一個指向Item
的關聯,我需要訪問Film
和Book
特定的字段。用戶將指定他們正在查找的Item
類型,但除了在我的DQL查詢中使用INSTANCE OF
之外,我沒有看到任何使用此信息的方式。
到目前爲止,我使用查詢像曾嘗試:
SELECT a FROM Entities\Auction a
INNER JOIN a.item i
INNER JOIN i.bookTypes b
WHERE i INSTANCE OF Entities\Book
AND b.type = 'Fantasy'
AND ...".
這樣一個錯誤的查詢結果說:
類
Entities\Item
沒有字段或協會命名bookTypes
這是虛假的Book
,但真的Item
。
我也曾嘗試
SELECT a FROM Entities\Book i
INNER JOIN i.auction a ...
不過,我想學說規定,我指的是同一個實體在SELECT
和FROM
語句。
如果這很重要,我使用類表繼承。儘管如此,我認爲切換到單表繼承是不可能的。
任何想法?
可能重複[where-ing歧視表](http://stackoverflow.com/questions/14851602/where-ing-in-discriminated-tables) – Ocramius 2014-01-20 05:57:10