使用yml配置向现有供应商捆绑包实体添加新字段

时间:2014-09-11 06:29:44

标签: php symfony doctrine-orm

我正在尝试向供应商包中的现有实体添加多对一关联。

这是供应商包中的实体: -

class Post
{
    private $id;

    private $title;

    private $accroche;

    private $article;

    private $categories;

    private $comments;

    private $created;

    private $updated;

    private $publied;
}

并且,这是供应商包中的Post实体的orm映射文件: -

Mv\BlogBundle\Entity\AdminBlog\Post:
  type:                 entity
  table:                null
  repositoryClass:      Mv\BlogBundle\Entity\AdminBlog\PostRepository
  id:
    id:
      type:             integer
      generator:
        strategy:       AUTO

  fields:
    title:
      type:             string
      length:           150
    accroche:
      type:             text
    article:
      type:             text
    created:
      type:             datetime
      gedmo:
        timestampable:
          on: create
    updated:
      type:             datetime
      gedmo:
        timestampable:
          on: update
    publied:
      type:             datetime

  manyToMany:
    categories:
      targetEntity:   Mv\BlogBundle\Entity\AdminBlog\Category
      inversedBy:     posts
      joinTable:
        name:         post_category
        joinColumns:
          post_id:
            referencedColumnName: id
            onDelete:             CASCADE
        inverseJoinColumns:
          category_id:
            referencedColumnName: id
            onDelete:             RESTRICT

  oneToMany:
    comments:
      targetEntity:   Mv\BlogBundle\Entity\AdminBlog\Comment
      mappedBy:       post

我创建了一个供应商包的子包。我研究了mappedSuperclass并尝试了其他继承方法。但是他们都没有为“Post”实体添加关联。

我只想拥有以下内容(尝试在orm映射文件中添加它但不能正常工作): -

manyToOne:
  user:
    targetEntity:   TP\Bundle\MainBundle\Entity\User
    joinColumns:
        user_id:
          referencedColumnName: id

1 个答案:

答案 0 :(得分:0)

作为解决方案,我可以建议SonataEasyExtendsBundle。正如docs所说,它解决的一个问题是:

  

如果开发人员想要将新属性添加到VB实体中,那么   开发人员需要使用自定义映射创建新的子实体。

但它有一些requirements供应商套件。您可以阅读简短explanation并确定它是否适合您。