我有一个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 %}