symfony - Doctrine2 多对多多态关系

标签 symfony doctrine-orm many-to-many polymorphism

我尝试在 Symfony2 中使用 Doctrine2 创建多对多多态关系。

我想要一个与多个实体动态关联的实体。

我想获得以下架构:

  • 帖子
  • id:整数,
  • 名称:字符串

  • ======
  • 视频
  • id - 整数
  • 名称 - 字符串

  • ======
  • 标签
  • id - 整数
  • 名称 - 字符串

  • ======
  • 标签
  • tag_id - 整数
  • taggable_id - 整数
  • taggable_type - 字符串

  • 在可标记实体中:
  • tag_id 是关联标签的
  • taggable_id 是关联帖子的 ID
  • taggable_type 是关联实体的类型,即“帖子”

  • 我希望它与“视频”相同,其中:
  • tag_id 代表关联标签的id
  • taggable_id 是关联视频的 ID
  • taggable_type 是关联实体的名称,即“视频”

  • 而这一切都无需复制表格。

    我已经测试了多种解决方案,但我从未得到过这个结果:/

    预先感谢您的帮助。

    最佳答案

    你可以用 OOP 解决这个问题,使用继承。

    定义一个 abstract class Taggable ,并制作 PostVideo扩展那个类。然后从 Tag 创建一个 OneToMany至 Taggable .

    Doctrine 会处理一切,假设您在 Single Table Inheritance 或 Class Table Inheritance 之间进行选择。

    不过,我会选择 Class Table。

    有关此主题的更多信息 here .

    关于symfony - Doctrine2 多对多多态关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072573/

    相关文章:

    symfony - 如何在没有渲染路线的情况下获取 Twig 中的当前绝对网址?

    symfony - gedmo 学说可翻译扩展。检索所有翻译或特定翻译(不同于当前语言环境)

    php - 实体中的 Doctrine isDeletable 方法

    iphone - 在核心数据中搜索具有空 "to-many"关系的所有对象

    .net - EF4.3 + sqlite 多对多关系

    symfony - Doctrine 查询生成器,其中 ManyToMany 的计数大于

    html - HTTPS 源代码有空格,但 HTTP 没有

    symfony - 在 Symfony2 中手动创建表单,但仍然在功能上使用它的 CSRF 和 isValid()

    php - Doctrine2 不保留某些字段

    php - 动态目标实体 Doctrine 2 和 Symfony 2