我在symfony2
/ doctrine
中遇到与一对多自引用关系有关的问题。此处描述了类似的问题:Error Symfony2 Doctrine Found entity of type Doctrine\Common\Collections\ArrayCollection on association sth#vote, but expecting sth\Vote但未提供解决方案。
我提出以下例外:
找到Doctrine \ Common \ Collections \ ArrayCollection类型的实体 协会AppBundle \ Entity \ Kategoria#corka,但期待 的appbundle \实体\ Kategoria
执行下面列出的脚本时似乎发生了此错误。这似乎有点奇怪,因为我试图通过findOneBy doctrine函数更新基于数据的关系,这应该返回我的实体而不是数组。
$Corka = $em->getRepository('AppBundle:Kategoria')->findOneByNazwa($row["nazwa"]);
$Ojciec = $em->getRepository('AppBundle:Kategoria')->findOneByNazwa($result[$row["rodzicId"]]["nazwa"]);
if(!$Corka) die ("Critical error: Corka: ".$row["nazwa"]."not found");
if(!$Ojciec) die ("Critical error: Ojciec: ".$result[$row["rodzicId"]]["nazwa"]."not found");
$Ojciec->addCorka($Corka);
我的kategoria.php:
/**
* @ORM\ManyToOne(targetEntity="Kategoria", inversedBy="rodzic")
* @ORM\JoinColumn(name="rodzic", referencedColumnName="id", nullable=true)
**/
private $corka;
/**
* @ORM\OneToMany(targetEntity="Kategoria", mappedBy="corka")
**/
private $rodzic;
/**
* Add corka
*
* @param \AppBundle\Entity\Kategoria $corka
* @return Kategoria
*/
public function addCorka(\AppBundle\Entity\Kategoria $corka)
{
$this->corka[] = $corka;
return $this;
}
答案 0 :(得分:0)
在我的情况下,此错误是由实体自引用关联映射中的错误注释引起的。
可以在此处找到正确的映射注释: http://doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html
就我而言,他们是:
/**
* @ORM\ManyToOne(targetEntity="Kategoria", inversedBy="corka")
* @ORM\JoinColumn(name="rodzic", referencedColumnName="id", nullable=true)
**/
private $rodzic;
/**
* @ORM\ManyToMany(targetEntity="Ksiazka", mappedBy="kategoria")
**/
protected $ksiazka;