我有一个名为“拍卖”的实体,与“物品”有一对一的关系。 “物品”是“电影”和“书”的映射超类。我需要一条查询语句来支持搜索引擎,允许用户查找不同属性的拍卖,并且售卖具有不同属性的物品(正是“AND”部分使其具有挑战性)。
问题是,即使“拍卖”将关联指向“物品”,我仍然需要访问“电影”和“书”的特定字段。用户将指定他们正在寻找的“物品”类型,但我没有看到除了在我的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 ...
我猜Doctrine要求我在SELECT
和FROM
语句中引用相同的实体。
如果这很重要,我正在使用类表继承。尽管如此,我认为切换到单表继承也行不通。
有什么想法吗?