我已经看过堆栈溢出和网络上其他地方的字面问题/答案,但无法找到解决此问题的办法。Symfony 2与Doctrine之间的一对多关系
在我解释这个问题,我有:
- 剥去我的实体,从而使他们只有
- 已清除学说查询缓存/元数据缓存
- 降到最低的属性和方法,重新架构
- 检查我的拼写
我有以下两个实体:
<?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来说都非常重要,所以不知道我做错了什么 - 它可能是非常明显的。
任何帮助,将不胜感激。
$ project var not null?或者当 - > getSources() - > toArray();那崩溃? – Sybio
$ project var不为空,是 - 当我在控制器中执行'$ sources = $ project-> getSources() - > toArray();'时,会导致异常。如果我拿出来,那就没问题。 – JonB