【问题标题】:Symfony / Doctrine "refers to the owning side field which does not exist" - but property is present in classSymfony / Doctrine“指的是不存在的拥有方字段”-但属性存在于类中
【发布时间】:2013-11-17 20:01:46
【问题描述】:

SeUserProgress 和 SeUser。 SeUserProgress 表为每个用户保存多个条目。这通过以下两个映射表示。

类:SeUserProgress

/**
* @ORM\ManyToOne(targetEntity="SeUser", inversedBy="progress")
* @ORM\Column(name="user_id", type="integer", nullable=true)
*/ 
private $user;

类:SeUser

/**
* @ORM\OneToMany(targetEntity="SeUserProgress", mappedBy="user")
*/ 
private $progress;

但是我不断收到一条错误消息说

The association PROJECT\ThisBundle\Entity\SeUser#progress refers to the owning side  field PROJECT\ThisBundle\Entity\SeUserProgress#user which is not defined as association.

The association PROJECT\ThisBundle\Entity\SeUser#progress refers to the owning side  field PROJECT\ThisBundle\Entity\SeUserProgress#user which does not exist.

我什至可以通过下面的代码调用 progress 属性(尽管它返回所有用户的所有进度)。

$user->getProgress()

任何关于为什么 Doctrine 无法识别映射属性的建议将不胜感激。

【问题讨论】:

  • 谨慎命名变量。由于您使用 OneToMany 关系,因此您的任何一个变量都必须是复数。在这种情况下,它将是$progresses。这将帮助您以后理解和阅读您的代码。对于您的问题:您use -是否正确包含您的类或者它们是否在同一个命名空间中。这可能会导致此类错误。
  • 嗨,本尼,感谢您提供的信息。这些类在同一个命名空间中,并与其他实体一起使用。

标签: php symfony doctrine-orm entity


【解决方案1】:

将您的代码从@ORM\Column 更改为@ORM\JoinColumn:

/**
 * @ORM\ManyToOne(targetEntity="SeUser", inversedBy="progress")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */ 
private $user;

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2013-05-22
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 2023-03-13
    • 2014-02-24
    • 1970-01-01
    • 2014-11-23
    相关资源
    最近更新 更多