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?这是它唯一应该关心的