Php 如何在原则2中执行复杂的实体关联查询?(虚拟实体)

Php 如何在原则2中执行复杂的实体关联查询?(虚拟实体),php,database-design,associations,doctrine-orm,Php,Database Design,Associations,Doctrine Orm,假设我有一个博客应用程序。 作者可以在一篇文章中添加多个图像,或者通过提供指向web上现有图像url的链接,或者上传新图像 我希望能够从图像(上传或url)追溯到使用该图像的所有帖子,并从特定帖子追溯到该帖子中的所有图像(例如,我可以删除非法的图像和/或暂停使用它们的帖子,直到作者修复帖子) 然而,我对上传的图像和url图像使用不同的实体-上传的图像比url图像有更多关于图像的数据 这会产生更复杂的代码,因为在每次保存编辑的文章时,我需要检查哪种类型是特定的图像(在文章中的所有图像中,我需要检查

假设我有一个博客应用程序。
作者可以在一篇文章中添加多个图像,或者通过提供指向web上现有图像url的链接,或者上传新图像

我希望能够从图像(上传或url)追溯到使用该图像的所有帖子,并从特定帖子追溯到该帖子中的所有图像(例如,我可以删除非法的图像和/或暂停使用它们的帖子,直到作者修复帖子)

然而,我对上传的图像和url图像使用不同的实体-上传的图像比url图像有更多关于图像的数据

这会产生更复杂的代码,因为在每次保存编辑的文章时,我需要检查哪种类型是特定的图像(在文章中的所有图像中,我需要检查),然后创建或更新其记录,并分配给文章实体中的关系字段

所以。。。假设我有一个
UploadedImage
和一个
UrlImage
实体,我想在
post
实体中有一个
setImages
方法,它检查它得到的每个图像,如果它是上传的或是url,然后调用
setUploadedImages
setUrlImages

但是,我需要某种虚拟的
图像
存储库,以同样的方式加载图像

听起来有点复杂,我想知道:

  • 我如何拥有一个虚拟的条令实体(及其存储库和所有)
  • 有更好的设计吗

  • 以下是您正在尝试执行的操作的文档:

    它描述了单表继承与类表继承。 您的情况适合后一种情况,但也考虑迁移到单表继承。


    如果这些图像的(代码)用户无论其来源如何都对它们一视同仁,那么增加的查询复杂性和数据库使用将不值得进行规范化。

    您是否考虑过以何种方式使用?@Orbling?它将如何解决决定如何处理每种类型的“问题”?好的,通过使用继承映射,您可以拥有一个表示这两种类型的超类,然后它们可以一起处理。根据子类型的不同,它们可以有相同的方法和做不同的事情。Doron是正确的,这正是继承的意义所在。您有一个基本实体类(或映射超类),它提供了两种类型共有的所有功能。UrlImage和UploadeImage都可以提供自己的方法实现,如
    getUrl()
    。你也可以用其他方法把一个图像(不管是哪种类型)作为参数,比如“flagAllPostsContainingImage($Image)”,我个人很感兴趣,为什么Post实体应该以某种方式连接到UploadeImage?这是它唯一应该关心的