【问题标题】:Symfony2 misconfigured entitySymfony2 配置错误的实体
【发布时间】:2018-03-29 04:02:32
【问题描述】:

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

这两个实体的错误相同,所以我只包括其中一个作为示例。


BizTV\MediaManagementBundle\Entity\QrImage:

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

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

【问题讨论】:

  • 你需要什么?单向还是双向关系?
  • QrImage 可以有多个 QrVisit,但每个 QrVisit 只有一个 QrImage。

标签: symfony doctrine entity


【解决方案1】:

如果您想建立双向多对一/一对多关系,您必须将 mappedBy 属性放在 OneToMany 一侧,例如:

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

以及 ManyToOne 端的 inversedBy,例如:

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

这就是你所需要的。供您参考,请查看Doctrine doc

您收到的错误指的是不同的实体(用户组),但您可以以相同的方式检查它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-25
    相关资源
    最近更新 更多