В Doctrine 2 (.1) - Могу ли я иметь (виртуальный) репозиторий для сущности MappedSuperclass? - PullRequest
3 голосов
/ 15 октября 2011

У меня есть абстрактный класс MappedSuperclass (AbstractImage), от которого наследуются 2 других объекта (UrlImage и UploadImage).

Суперкласс имеет ассоциацию с другой сущностью (Post), и мне нужен способ автоматического получения и установки экземпляров UrlImage и UploadImage от и к сущности Post (= это означает, что я будет иметь addImage на сущности Post, которая будет знать, является ли данная сущность сущностью UploadImage или UrlImage).

Аналогично, поскольку у каждой сущности есть собственный id для записей, мне нужен виртуальный репозиторий, который будет иметь метод find, который получит id и type (url или * 1021). *) и вызовите метод find в соответствующем хранилище (UploadImageRepository или UrlImageRepository).

Получить обычный репозиторий (например, UrlImageRepository) легко:

$em->getRepository('UrlImage');

но как я могу это сделать на MappedSuperclass?

Вот еще немного информации о ситуации: Как я могу выполнить сложные запросы на сопоставление сущностей в доктрине 2? (виртуальная сущность)

Ответы [ 2 ]

0 голосов
/ 15 июня 2014

Просто для справки.Можно загрузить репозиторий для AbstractImage, поэтому метод find будет работать для каждого унаследованного объекта:

$imageRepository = $entityManager->getRepository('MyBundle:AbstractImage');
$urlImage = $imageRepository->find(1); //assuming record with id=1 is UrlImage entity
$uploadImage = $imageRepository->find(2); //assuming record with id=2 is UploadImage entity
0 голосов
/ 12 марта 2012

Не пробовал, но вы можете попробовать сделать 3 репозитория и заставить UploadImageRepository и UrlImageRepository расширить третий (базовый, виртуальный) репозиторий.

Кстати.Небольшой совет по MappedSuperclasses ... всегда делайте абстракцию, иначе вы столкнетесь со всевозможными другими ошибками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...