Doctrine 2.1 で継承を使用しています:
Fiche はマスター エンティティであり、Artist は Fiche から派生したものです。
so : フィッシュ -> アーティスト
次に、 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 ...
ここでの問題は、常に Fiche ではなく Artist エンティティを渡すことで、次のエラーが発生します。
タイプ 'Teelt\FicheBundle\Entity\Artist' の式は、このコンテキストでは許可されていません。
したがって、アーティストから Fiche を取得する必要があると思います...同じオブジェクトなので、悪いように聞こえます!