次のクエリがあります。
$query = $em->createQueryBuilder()->select('p.id, p.name, p.price, p.cover')
->from("SiteMainBundle:Product", 'p')
->innerJoin('p.category', 'c')
->innerJoin('p.shop', 'shop')
;
私の製品エンティティ内では、カバーは実際には別のエンティティであり、次のようになります。
/**
* @Accessor(getter="getCover")
*/
private $cover;
public function getCover()
{
if($this->pictures->count() > 0) {
return $this->pictures[0];
}
return new ProductPicture();
}
ただし、これを行うとエラーが発生します。
"[Semantical Error] line 0, col 32 near 'cover FROM SiteMainBundle:Product': Error: Class Site\\MainBundle\\Entity\\Product has no field or association named cover"
これはプライベートとして宣言されているためだと思いますが、クエリ ビルダーからメソッド getCover を呼び出すことはできますか?