Symfony2 和 Doctrine - 未定义的索引



我有一个Symfony 2.4.x项目。

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

每个会议都有论文,

对于一个特定的会议,我想得到论文的数量。

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

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

在实体文件中,我有:

/**
 * @ORMManyToOne(targetEntity="Conference", inversedBy="papers")
 * @ORMJoinColumn(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中两个实体的完整类:

  • 纸张:http://pastebin.com/Fv7m70VN
  • 会议: http://pastebin.com/dbCsH7Nh

编辑2:这是我通过尝试解决问题发现的一些新闻。另一个类涉及:提交。

这是代码: http://pastebin.com/bkdRtjdq

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

当我试图在实现中获取具有ObjectManager的实体时,我遇到了同样的错误ManyToMany

$repository->findBy(
    array('members' = > $user)
);

我的解决方法是使用 DQL Repository编写find方法:

public function findByMember(User $member)
{
    $qb = $this->createQueryBuilder('g');
    $qb->innerJoin('g.members', 'wg')
        ->where($qb->expr()->eq('wg', ':member'))
        ->setParameter('member', $member);
    return $qb->getQuery()->getResult();
}

也许这对某人有用。

我猜这可能是由复数情况引起的:论文s

试试这个:

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

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

相关内容

  • 没有找到相关文章

最新更新