Нет Animals:Category
сущности. У вас есть сущности Animals
и Category
.
Правильный ответ зависит от того, используете ли вы Symfony 3 или 4, потому что Symfony 3 использует псевдонимы сущностей (пространство имен с пометкой :
, которое вы пытаетесь не использовать), а Symfony 4 предпочитает полное пространство имен (\App\Entity\Animals
).
Итак, первая ошибка в строке, где вы пытаетесь получить хранилище:
getRepository('Animals:Category')
И второй в findByIdJoinedToCategory()
в DQL-запросе:
'SELECT a, b FROM Animals:Category a
JOIN a.category b'
Теперь решения:
Symfony 3
Поскольку, похоже, у вас нет пакетов (я полагаю, это Symfony 4, но неважно), у вас нет псевдонима пространства имен сущности, поэтому вы должны просто использовать его имя.
getRepository('Animals')
Теперь, я предполагаю, что с a
вы хотите сослаться на Animals
сущность / таблицу, поэтому она должна быть
'SELECT a, b FROM Animals a
JOIN a.category b'
Symfony 4
Если вы используете Symfony 4, то в качестве имени сущности следует использовать FQNS для сущности (App\Entity\Animals
).
Так было бы
getRepository('\App\Entity\Animals')
или
getRepository(\App\Entity\Animals::class)
чтобы получить хранилище. Второй вариант лучше, потому что при необходимости легче будет проводить рефакторинг (IDE сможет найти использование класса).
И в запросе это будет
'SELECT a, b FROM App\Entity\Animals a
JOIN a.category b'
или если вы хотите избежать использования жестко закодированных имен классов строк:
'SELECT a, b FROM ' . \App\Entity\Animals:class . ' a
JOIN a.category b'