我有一个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