1

次のクエリがあります。

   $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 を呼び出すことはできますか?

4

2 に答える 2

0

プライベートな可視性のためでcoverはなく、エンティティ フィールドとして定義されていないためです。

/** 
 * @ORM\Column(type="string")
 *
 * @Accessor(getter="getCover") 
 */
private $cover;
于 2013-06-07T05:25:23.787 に答える