使用Doctrine 2创建多对多关系时出错

时间:2014-03-04 15:26:38

标签: doctrine-orm zend-framework2

我正在尝试使用Doctrine 2的ZF2模块为我的数据库生成架构,但具有以下定义:

/**
 * @ORM\ManyToMany(targetEntity="Tag")
 * @ORM\JoinTable(name="Manytomany_Issuetag",
 *      @ORM\joinColumns={@ORM\JoinColumn(name="IssueId", referencedColumnName="id")},
 *      @ORM\inverseJoinColumns={@ORM\JoinColumn(name="TagId", referencedColumnName="id")}
 *      )
 */
protected $tags;

当我运行vendor/bin/doctrine-module orm:schema-tool:update --dump-sql时,收到以下错误:

  

不允许在属性Application \ Entity \ Issue :: $ tags上声明注释@ORM \ joinColumns。您只能在这些代码元素上使用此注释:PROPERTY

编辑:根据要求,这是工作注释

/**
 * @ORM\ManyToMany(targetEntity="Tag")
 * @ORM\JoinTable(name="Manytomany_Issuetag",
 *      joinColumns={@ORM\JoinColumn(name="IssueId", referencedColumnName="id")},
 *      inverseJoinColumns={@ORM\JoinColumn(name="TagId", referencedColumnName="id")}
 *      )
 */
 protected $tags;

1 个答案:

答案 0 :(得分:2)

我认为您需要删除几个@ORM\声明,它应该看起来像这样(显然没有我的评论)

/**
 * @ORM\ManyToMany(targetEntity="Tag")
 * @ORM\JoinTable(name="Manytomany_Issuetag",
 *      joinColumns={@ORM\JoinColumn(name="IssueId", referencedColumnName="id")},
 *     ^ drop the @ORM\
 *      inverseJoinColumns={@ORM\JoinColumn(name="TagId", referencedColumnName="id")}
 *     ^ drop the @ORM\
 *      )
 */
protected $tags;