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),但您可以用相同的方式检查它们。
我收到两条关于我的 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),但您可以用相同的方式检查它们。