У меня проблема с запросом DQL и специализацией сущностей.
У меня есть объект под названием Аукцион
, который является отношением OneToOne
к объекту
. Элемент
является отображенным суперклассом
для Film
и Book
. Мне нужен запрос, который мог бы поддерживать поисковую систему, позволяя пользователю искать аукционы с разными свойствами И
, продающими предметы с разными свойствами (это часть И
, которая усложняет задачу) .
Проблема в том, что даже несмотря на то, что Аукцион
имеет связь, указывающую на товар
как таковой, мне нужен доступ к Фильм
- и Книга
-специфические поля. Пользователи будут указывать тип Item
, который они ищут, но я не вижу другого способа использовать эту информацию, кроме использования INSTANCE OF
в моем запросе DQL.
До сих пор я пробовал использовать такой запрос:
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 ...".
Такой запрос приводит к ошибке:
Class
Entities \ Item
не имеет поля или ассоциации с именемbookTypes
, что неверно для книги
, но верно для элемента
.
Я также пробовал
SELECT a FROM Entities\Book i
INNER JOIN i.auction a ...
, но считаю, что Доктрина требует, чтобы я ссылался на одну и ту же Сущность в операторах SELECT
и FROM
.
Если это важно, я использую наследование таблиц классов. Тем не менее, я не думаю, что переход к наследованию одной таблицы поможет.
Есть идеи?