php - 我如何在原则 2 中进行复杂的实体关联查询? (虚拟实体)

标签 php database-design associations doctrine-orm

假设我有一个博客应用程序。
作者可以通过提供网络上现有图片的 URL 链接或上传新图片,将多张图片添加到帖子中。

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

但是,我对上传的图片和网址图片使用不同的实体 - 上传的图片比网址图片具有更多关于图片的数据。

这会导致更复杂的代码,因为在每次保存已编辑的帖子时,我都需要检查哪种类型是特定图像(在我需要运行的帖子中的所有图像中),然后创建或更新它记录,并赋值给帖子实体中的关系字段。

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

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

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

  1. 我怎样才能拥有一个虚拟学说实体(及其存储库和所有内容)?
  2. 是否有更好的设计?

最佳答案

这是您要执行的操作的文档:
http://doctrine-orm.readthedocs.org/en/latest/reference/inheritance-mapping.html

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

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

关于php - 我如何在原则 2 中进行复杂的实体关联查询? (虚拟实体),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7716032/

相关文章:

php - 允许用户从自定义 Joomla 登录表单中选择用户组

php - 如何在 Yii2 中使用 Yii::$app->security->encryptByKey() 保存加密数据

php - Laravel - 在 View 中显示存储在数据库的一行中的数组图像

php - 从 View 成功插入后MySQL出现一般错误

mysql - 用于存储统计数据的数据库表结构

sql - 如何为这种情况正确设计数据库模式

ruby-on-rails - Activeadmin 在表单中创建新关联 "belongs_to"

java - 在 Java 中使用 ORM 处理与接口(interface)的关联

java - 将表映射到 Hibernate 中的两个继承表

mysql - 如何在没有连接的情况下使用自关联条件?