假设我有一个博客应用程序。
作者可以通过提供网络上现有图片的 URL 链接或上传新图片,将多张图片添加到帖子中。
我希望能够从图像(上传或 url)回溯到使用该图像的所有帖子,以及从特定帖子回溯到该帖子中的所有图像(例如 - 这样我就可以删除图像是非法的和/或暂停使用它们的帖子,直到作者修复帖子)。
但是,我对上传的图片和网址图片使用不同的实体 - 上传的图片比网址图片具有更多关于图片的数据。
这会导致更复杂的代码,因为在每次保存已编辑的帖子时,我都需要检查哪种类型是特定图像(在我需要运行的帖子中的所有图像中),然后创建或更新它记录,并赋值给帖子实体中的关系字段。
所以...假设我有一个 UploadedImage
和一个 UrlImage
实体,我想在 中有一个
实体,它检查它获取的每个图像,如果它是上传的或 url,然后调用 setImages
方法postsetUploadedImages
或 setUrlImages
。
但是,我需要某种虚拟 images
存储库,以相同的方式加载图像。
听起来有点复杂,我想知道:
- 我怎样才能拥有一个虚拟学说实体(及其存储库和所有内容)?
- 是否有更好的设计?
最佳答案
这是您要执行的操作的文档:
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html
它描述了单表继承与类表继承。 您的情况适合后一种情况,但也请考虑迁移到单表继承。
如果这些图像的(代码)用户无论其来源如何都一视同仁,增加的查询复杂性和数据库使用将不值得规范化。
关于php - 我如何在原则 2 中进行复杂的实体关联查询? (虚拟实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7716032/