我有一个MappedSuperclass抽象类(AbstractImage
),其他2个实体从中继承(UrlImage
和UploadImage
)。
Superclass与另一个实体(Post
)有关联,我需要一种方法来从{{1}获取和设置UrlImage
和UploadImage
的实例。实体自动(=意味着我在Post
实体上有一个addImage
,它将知道给定的实体是Post
还是UploadImage
实体。 / p>
同样,由于每个实体都有自己的UrlImage
记录,我需要一个具有id
方法的虚拟存储库,它将获得find
和id
(type
或url
)并在相应的存储库(upload
或find
)上调用UploadImageRepository
方法。
获取正常的存储库(如UrlImageRepository
)很简单:
UrlImageRepository
但我怎么能在$em->getRepository('UrlImage');
上做到这一点?
以下是有关此情况的更多信息:How can I do complex entity associations queries in doctrine 2? (virtual entity)
答案 0 :(得分:0)
没有尝试过,但您可以尝试制作3个存储库,并使UploadImageRepository
和UrlImageRepository
扩展第三个(基础,虚拟)存储库。
顺便说一下。关于MappedSuperclasses的一点建议......总是抽象,否则你会遇到各种其他错误。
答案 1 :(得分:0)
仅供参考。可以为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