Symfony2和Doctrine - 未定义的索引

时间:2014-01-13 14:45:36

标签: php symfony doctrine-orm entity twig

我有一个Symfony 2.4.x项目。

在那里,我有两个映射在一起的实体:会议和论文。

每个会议都有论文和特定会议,我想获得论文数量。

为此,在我的会议实体中,我有:

/**
 * @ORM\OneToMany(targetEntity="Paper", mappedBy="conference")
 */
protected $papers;

在我的实体论文中:

/**
 * @ORM\ManyToOne(targetEntity="Conference", inversedBy="papers")
 * @ORM\JoinColumn(name="conference_id", referencedColumnName="id")
 */
protected $conference;

当我在Symfony2.0上有这个项目时,一切都运行良好,但现在我在Symfony 2.4.x中迁移它,我在尝试时遇到以下错误:

count($conf->getPapers()); // In the controller
{{ conf.papers | length }} // In the twig template

错误:

ContextErrorException: Notice: Undefined index: hash_key in /var/www/git/conference2.0-v2.4/vendor/doctrine/common/lib/Doctrine/Common/Proxy/AbstractProxyFactory.php line 121

编辑:以下是pastebin中两个实体的完整类:

编辑2:这是我通过尝试解决问题而找到的一些消息。另有一个classe参与其中:提交。

以下是代码:http://pastebin.com/bkdRtjdq

在Submission类中,我的主键是hash_key而不是id。

3 个答案:

答案 0 :(得分:1)

当我尝试在[{1}}真实关系中获得ObjectManager的实体时,我遇到了同样的错误:

ManyToMany

我的解决方法是使用DQL在$repository->findBy( array('members' = > $user) ); 中编写find方法:

Repository

也许这对某人有用。

答案 1 :(得分:0)

是否存在论文为0的情况? conf.papers变量可能为null,您需要在计数之前先检查它是否为空。      {%if conf.papers为空%}         ...      {%endif%}

答案 2 :(得分:0)

我猜它可能是由多个案例造成的:纸张 s

试试这个:

/**
 * @ORM\OneToMany(targetEntity="Paper", mappedBy="conference")
 */
protected $paper;