Symfony2 错误配置的实体

Symfony2 misconfigured entity

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

这两个实体都是同样的错误,所以我只以其中一个为例。


BizTV\MediaManagementBundle\Entity\QrImage:

The field BizTV\MediaManagementBundle\Entity\QrImage#visits is on the inverse side of a bi-directional relationship, but the specified mappedBy association on the target-entity BizTV\MediaManagementBundle\Entity\QrVisit#QrImage does not contain the required 'inversedBy="visits"' attribute.

Qr访问实体:

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;

但这会产生错误:

[Creation Error] The annotation @ORM\JoinColumn declared on property BizTV\UserBundle\Entity\UserGroup::$company does not have a property named "inversedBy". Available properties: name, referencedColumnName, unique, nullable, onDelete, columnDefinition, fieldName

如果你想建立双向 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),但您可以用相同的方式检查它们。