Symfony2配置错误的实体

时间:2017-10-17 12:48:24

标签: symfony doctrine entity

我收到两条关于Symfony 2项目中配置错误的实体的警告。它在开发环境中运行良好,但生产环境无法启动,我怀疑这些配置错误的实体可能是原因。

两个实体的错误相同,所以我只将其中一个作为例子。

BizTV \ MediaManagementBundle \实体\ QrImage:

  

字段BizTV \ MediaManagementBundle \ Entity \ QrImage#visits位于双向关系的反面,但目标实体BizTV \ MediaManagementBundle \ Entity \ QrVisit#QrImage上指定的mappedBy关联不包含所需的'inversedBy =“访问”'属性。

QrVisit实体:

class QrVisit 
{

...

/**
* @var object BizTV\MediaManagementBundle\Entity\QrImage
*  
* @ORM\ManyToOne(targetEntity="BizTV\MediaManagementBundle\Entity\QrImage")
* @ORM\JoinColumn(name="QrImage", referencedColumnName="id")
*/
protected $QrImage;

QrImage实体:

class QrImage
{

...

/**
 * @ORM\OneToMany(targetEntity="BizTV\MediaManagementBundle\Entity\QrVisit", mappedBy="QrImage")
 */
private $visits;

我更改了QrImage以包含inversedBy,如下所示,但我可能做错了,因为我仍然收到错误消息,尽管是新消息。

/**
 * @ORM\OneToMany(targetEntity="BizTV\MediaManagementBundle\Entity\QrVisit", mappedBy="QrImage", inversedBy="visits")
 */
private $visits;

但这会产生错误:

  

[创建错误]在属性BizTV \ UserBundle \ Entity \ UserGroup :: $ company上声明的注释@ORM \ JoinColumn没有名为“inversedBy”的属性。可用属性:name,referencedColumnName,unique,nullable,onDelete,columnDefinition,fieldName

1 个答案:

答案 0 :(得分:0)

如果您想建立双向ManyToOne / OneToMany关系,您必须将mappedBy属性放在OneToMany方面,如:

@ORM\OneToMany(targetEntity="BizTV\MediaManagementBundle\Entity\QrVisit", mappedBy="QrImage")

和ManyToOne方面的inversedBy如:

@ORM\ManyToOne(targetEntity="BizTV\MediaManagementBundle\Entity\QrImage", inversedBy="visits")

这就是你所需要的一切。如需参考,请查看Doctrine doc

您获得的错误是指另一个实体(UserGroup),但您可以采用相同的方式检查它们。