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