连接列无法识别实体关系

时间:2014-08-29 10:19:09

标签: php orm doctrine-orm zend-framework2 doctrine

我正在尝试查找Monthly表中与Category有关联的所有结果。 我做了我的研究,以下代码在理论上应该说工作但不知何故抛出以下错误 Notice: Undefined index: joinColumns in...

这些表由连接表连接,使用的密钥为category_idmonthly_id尝试使用category_id运行查询,但仍然无法正常工作并抛出另一个错误。

当我运行orm:validate-schema时,似乎一切正常。我错过了什么?

来自每月实体

    /**
     * @var \Doctrine\Common\Collections\Collection
     *
     * @ORM\ManyToMany(targetEntity="Bnk\Entity\Category", inversedBy="monthly")
     * @ORM\JoinTable(name="months_categories",
     *   joinColumns={
     *     @ORM\JoinColumn(name="monthly_id", referencedColumnName="id")
     *   },
     *   inverseJoinColumns={
     *     @ORM\JoinColumn(name="category_id", referencedColumnName="id")
     *   }
     * )
     */
    private $category;

我缺少什么,以便找到与给定Monthly相关联的所有Category

$months = $this->getEntityManager()
    ->getRepository('Bnk\Entity\Monthly')
    ->findBy(
        array(
            "category"=>$category->getId()
        )
);

1 个答案:

答案 0 :(得分:0)

你有没有忘记初始化你的ArrayCollection? 在您的实体构造函数中,您始终必须初始化它们。

所以在课堂上排名靠前:

use Doctrine\Common\Collections\ArrayCollection;

和你的构造函数:

public function __construct()
{
    $this->category= new ArrayCollection();
}