Как получить частичный результат от построителя запроса доктрины

У меня есть объект продукта, в котором он имеет массив в качестве атрибутов:

     /**
     * @ORM\OneToMany(targetEntity="Shopious\MainBundle\Entity\ProductPicture", mappedBy="product", cascade={"persist","remove"})
     */
    protected $pictures;

    /** 
    * @Accessor(getter="getCover") 
    */
    private $cover;
    public function getCover()
    {
        if($this->pictures->count() > 0) {
            return $this->pictures[0];
        }
        return new ProductPicture();
    }

Теперь в моем конструкторе запросов у меня есть следующий код:

 $query = $em->createQueryBuilder()->select('p')
            ->from("SiteMainBundle:Product", 'p')
            ->innerJoin('p.category', 'c')
            ->innerJoin('p.shop', 'shop')
            ;

Проблема в том, что я неЯ не хочу выбирать всеатрибут Поэтому я хотел получить только первый ProductPicture в массиве картинок (в моем случае выше него 'похож на метод getCover ()). Как мне это сделать?

До сих пор я могу отфильтровать частичные атрибуты, которые я хочу, выполнив:

 $query = $em->createQueryBuilder()->select('p.name, p.id')
                ->from("SiteMainBundle:Product", 'p')
                ->innerJoin('p.category', 'c')
                ->innerJoin('p.shop', 'shop')
                ->innerJoin('p.pictures', 'pictures')
                ;

поэтому в приведенном выше примере я сделал внутреннее соединение на картинках, но как мне получить первый элемент отсюда?

В заключение мой вопрос заключается в том, как выбрать / запросить первое изображение ProductPicture в массиве картинок с помощью построителя запросов? Потому что, когда я делаю:

$ query = $ em->createQueryBuilder () ->выберите ( «р»)

он возвращает все атрибуты продукта, но я нея не хочу, чтобы все атрибуты продукта ... Я хотел только некоторые из них, такие как идентификатор, имя и т. д. Однако один из атрибутов продукта на самом деле является сущностью (которая является ProductPicture), так как я могу вернуть это в select заявление?

РЕДАКТИРОВАТЬ:

Вот's SQL-эквивалент того, как изображения должны быть внутренне соединены:

SELECT * 
FROM  `product` 
JOIN  `product_picture` ON  `product`.id =  `product_picture`.product_id
WHERE  `product`.id =100
LIMIT 1

Ответы на вопрос(2)

Ваш ответ на вопрос