У меня есть объект, который называется Product. Продукт имеет массив ProductPicture. Вот фрагмент коды:Выполнение внутренних соединений в первой строке таблицы
/**
* @ORM\OneToMany(targetEntity="Site\MainBundle\Entity\ProductPicture", mappedBy="product", cascade={"persist","remove"})
*/
protected $pictures;
Так у меня есть следующая доктрина запроса DQL запрос:
$query = $em->createQueryBuilder()
->select('p.id, p.name, pictures.name')
->from("SiteMainBundle:Product", 'p')
->innerJoin('p.category', 'c')
->innerJoin('p.shop', 'shop')
->innerJoin('p.pictures', 'pictures');
Что это делает, что он делает внутреннее соединение с каждой строкой изображений (потому что каждый продукт имеет Ману картину), и, следовательно, если я генерировать JSON из этого, он будет возвращать что-то вроде этого:
[{"id":346,"name":"11b650390dde2f3132875c2f265490040ce00d93.jpg"},
{"id":346,"name":"98c03f5e7896cf22143f5303f8fa54e7cb6a42d5.jpg"},
{"id":346,"name":"776c975ed78091fbdaaf0fceac90115258b822a0.jpg"},
{"id":346,"name":"b02f44ff728d0ca7b498038bfd331a364eb712a3.jpg"},
{"id":346,"name":"eccc317200ba6b3c01fd1815bd29ebac0b96f16a.jpg"}]
Я только хотел, чтобы это было внутреннее объединено с первый ProductPicture
в массиве, а не все и так будет генерировать что-то вроде этого:
[{"id":346,"name":"11b650390dde2f3132875c2f265490040ce00d93.jpg"}];
Нижняя рука, что мне не нужно все ProductPicture
, мне нужно только первый.
Просто для иллюстрации цели у меня есть метод, называемый getCover
в сущности продукта, который получает в массиве первый ProductPicture
:
/**
* @Accessor(getter="getCover")
*/
private $cover;
public function getCover()
{
if($this->pictures->count() > 0) {
return $this->pictures[0];
}
return new ProductPicture();
}
Это именно то, что я хочу, чтобы внутреннее соединение должны быть выполнены на.