【问题标题】:How to declare Doctrines Inheritance in a fixtures.yml file?如何在fixtures.yml 文件中声明教义继承?
【发布时间】:2011-04-20 13:53:29
【问题描述】:

我在 Symfony 的 fixtures.yml 文件中对 Doctrine 的继承有疑问。

想象一下:

新闻作者:
  遗产:
    扩展:sfGuardUser
    类型:简单

现在我想声明sfDoctrineGuardPlugin 的fixtures 文件的默认保护用户User_admin 是我的News 模型的第一个虚拟文章的作者。但是如何做到这一点呢?

我尝试了以下方法:

新闻作者:
  作者管理员:
    sfGuardUser: User_admin

然后我收到doctrine:data-load 任务的错误:

“NewsAuthor”上的未知记录属性/相关组件“sfguarduser”

我使用 Symfony 1.4.8 和 Doctrine 1.2.3。

谢谢你的期待,
莱米

【问题讨论】:

    标签: php symfony1 doctrine yaml


    【解决方案1】:

    你误解了 Doctrine 的继承是如何工作的。在简单继承下,NewsAuthor 不会引用sfGuardUser,它将包含sfGuardUser 拥有的所有列和关系以及您定义的那些。继承在这里是一种不好的方法。

    相反,您希望 NewsAuthor 具有对 sfGuardUser 的引用。在这种情况下,您的架构如下所示:

    NewsAuthor:
      columns:
        user_id:
          type: integer(4)
          notnull: true
          unique: true #if one-to-one correspondence
      relations:
        User:
          class: sfGuardUser
          local: user_id
          foreignType: one
    

    您的灯具将看起来像以前一样:

    NewsAuthor:
      AuthorAdmin:
        sfGuardUser: User_admin
    

    然后,您可以通过$newsAuthor->User 访问NewsAuthor 对象上的sfGuardUser 对象,类似地,您可以通过$user->NewsAuthor 访问sfGuardUser 实例上的NewsAuthor

    【讨论】:

    • 感谢您提供这个解释清楚的解决方案。但是我不明白继承有什么用?
    • 这取决于继承的类型。当我想在需要位于不同表中的相似类型之间共享方法时,我会使用具体继承。当同时检索相似类型时,我使用 column_aggregation。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 2019-07-16
    • 2011-04-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多