我收到两条关于Symfony 2项目中配置错误的实体的警告 . 它在开发环境中运行良好,但 生产环境 环境无法启动,我怀疑这些配置错误的实体可能是原因 .
两个实体的错误相同,所以我只将其中一个作为例子 .
BizTV\MediaManagementBundle\Entity\QrImage:
字段BizTV \ MediaManagementBundle \ Entity \ QrImage#visits位于双向关系的反面,但目标实体BizTV \ MediaManagementBundle \ Entity \ QrVisit#QrImage上指定的mappedBy关联不包含所需的'inversedBy =“访问”属性 .
QrVisit entity:
class QrVisit
{
...
/**
* @var object BizTV\MediaManagementBundle\Entity\QrImage
*
* @ORM\ManyToOne(targetEntity="BizTV\MediaManagementBundle\Entity\QrImage")
* @ORM\JoinColumn(name="QrImage", referencedColumnName="id")
*/
protected $QrImage;
QrImage entity:
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 回答
如果要 Build 双向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),但您可以以相同的方式检查它们 .