我已经在Stack Overflow和其他网站上查看了大量的问题/答案,但是找不到解决这个问题的方法。
在我解释问题之前,我已经:
- 剥离了我的实体,使它们只有最小的属性和方法。 - 清除了Doctrine查询缓存/元数据缓存。 - 删除并重新创建了模式。 - 检查了我的拼写。
我有以下两个实体:
在我解释问题之前,我已经:
- 剥离了我的实体,使它们只有最小的属性和方法。 - 清除了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非常基本,所以我不确定我做错了什么 - 这可能是一些非常明显的错误。
任何帮助都将不胜感激。
$sources = $project->getSources()->toArray();
时会引发异常。如果我将其删除,则一切正常。 - JonB