我将继承与 Doctrine 2.1 一起使用:
Fiche 是主实体,Artist 是从 Fiche 派生的
所以:Fiche -> 艺术家
然后我有这个方法,在另一个名为 Abonnement 的存储库中:
public function getCountAbonnes(\MyApp\FicheBundle\Entity\Fiche $fiche){
$qb = $this->_em->createQueryBuilder();
$qb->add('select', $qb->expr()->count('abonnement'));
$qb->from('\Teelt\FicheBundle\Entity\Abonnement', 'abonnement');
// !!!! this line is the problem !!!!
$qb->where('fiche', $fiche);
return $qb->getQuery()->getSingleScalarResult();
}
这是 Abonnement ORM 定义:
MyApp\FicheBundle\Entity\Abonnement:
type: entity
repositoryClass: MyApp\FicheBundle\Repository\AbonnementRepository
table: abonnement
# many fiche for many users
manyToOne:
user:
targetEntity: MyApp\UserBundle\Entity\User
inversedBy: abonnements
fiche:
targetEntity: MyApp\FicheBundle\Entity\Fiche
inversedBy: abonnements
# etc ...
我在这里遇到的问题是我总是通过 Artist 实体而不是 Fiche,我得到了这个错误:
在此上下文中不允许使用“Teelt\FicheBundle\Entity\Artist”类型的表达式。
所以我想我必须从我的艺术家那里获取 Fiche ......这听起来很糟糕,因为它是同一个对象!