我已经在 Stack Overflow 和网络上的其他地方查看了大量的问题/答案,但找不到解决这个问题的方法。
在我解释问题之前,我有:
- 剥离我的实体,使它们只有最少的属性和方法
- 已清除学说查询缓存/元数据缓存
- 删除并重新创建架构
- 检查我的拼写
我有以下两个实体:
<?php
namespace Docker\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Source
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="Project",inversedBy="sources")
* @ORM\JoinColumn(referencedColumnName="id")
*/
private $project;
}
<?php
namespace Docker\ApiBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
*/
class Project
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToMany(targetEntity="Source", mappedBy="project")
*/
private $sources;
public function __construct() {
$this->sources = new ArrayCollection();
}
public function getSources() {
return $this->sources;
}
}
因此,许多“来源”可以属于一个“项目”。
在我的控制器中,我有:
$em = $this->getDoctrine()->getManager();
$project = $em->find('Docker\ApiBundle\Entity\Project', 1);
$sources = $project->getSources()->toArray();
我尝试了很多东西,但我总是得到:
Notice: Undefined index: project in /.../www/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/BasicEntityPersister.php line 1577
就像我说的,我知道有很多关于这个的问题,但是没有一个被接受的答案能解决我的问题。
这一切看起来对于使用 Doctrine2 来说非常基础,所以不确定我做错了什么——这可能是非常明显的事情。
任何帮助,将不胜感激。