在关联时找到Doctrine \ Common \ Collections \ ArrayCollection类型的实体,但期望

时间:2015-08-12 15:21:07

标签: symfony doctrine-orm doctrine

我在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;
    }

1 个答案:

答案 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;