Есть запрос вида:
$qb = $this->createQueryBuilder("p")
->addSelect(array("u","c", "cu"))
->leftJoin("p.user", "u")
->leftJoin("p.comments", "c")
->leftJoin("c.user", "cu")
->where("p.id = :id");
$qb->setParameter("id",$id);
$query = $qb->getQuery();
return $query->getSingleResult(Query::HYDRATE_ARRAY);
В результате которого имеем массив вида:
Array(
'result' => Array (
"id" => "111",
"title" => "no title",
"user" => Array( "id" => "1", "email" => "1111" )
"comments" => Array ( "id" => "1", "text" => "aaaa", "user" => Array("id" => "1"));
)
);
Так вот, если делать как выше, то попадают в выборку все поля сущностей, что не всегда правильно.
А если делать так:
$qb = $this->createQueryBuilder("p")
->addSelect(array("u.id","c", "cu"))
->leftJoin("p.user", "u")
->leftJoin("p.comments", "c")
->leftJoin("c.user", "cu")
->where("p.id = :id");
$qb->setParameter("id",$id);
$query = $qb->getQuery();
return $query->getSingleResult(Query::HYDRATE_ARRAY);
То результат запроса будет совсем другим:
Array(
'result' => Array (
0 => Array(
"id" => "111",
"title" => "no title",
"comments" => Array ( "id" => "1", "text" => "aaaa", "user" => Array("id" => "1"))
),
"id" => "1"
)
);
Как грамотно составить запрос на доктрине чтобы выбирать только нужные поля, при этом сохранить структуру вложенности?