моего лица пользователя имеет несколько ассоциацийполучить учение, чтобы выбрать объекты без всех ассоциаций
oneToMany:
images:
targetEntity: Image
mappedBy: user
posts:
targetEntity: Post
mappedBy: user
fetch: EXTRA_LAZY
postcomments:
targetEntity: Postcomment
mappedBy: user
fetch: EXTRA_LAZY
я хочу, чтобы выбрать конкретный пользователь со всеми его постами и изображениями, но не его postcomments. Это вопрос, который я использую:
$qb = $em->createQueryBuilder()
->select(array('u', 'p', 'i'))
->from('AppBundle:User', 'u')
->leftJoin('u.posts', 'p')
->leftJoin('u.images', 'i')
->where('u.id = :id')
->setParameter('id', $id);
Однако полученный результат содержит все остальные ассоциации. Точно так же, как если бы я просто выбрал u и удалил соединения.
Как я могу выбрать только определенные ассоциации в результате?
Вот полный код апите вызов
public function getAction($id)
{
$em = $this->getDoctrine()->getEntityManager();
$qb = $em->createQueryBuilder()
->select(array('u', 'p', 'i'))
->from('AppBundle:User', 'u')
->leftJoin('u.posts', 'p')
->leftJoin('u.images', 'i')
->where('u.id = :id')
->setParameter('id', $id)
->getQuery();
$users = $db->getOneOrNullResult();
$view = $this->view($users);
return $this->handleView($view);
}`
Благодарим вас за claryfying. Однако мне нужно вывести результат $ qb в api как json, и он будет - независимо от того, добавляю ли я объединение или не оставляю их - всегда выводят КАЖДЫЕ связанные сущности, связанные с пользователем, поэтому в основном, когда я просто хочу иметь json с пользователем и изображениями, я до сих пор получаю сообщения, посткомментарии и т. д. Даже если я просто «выберем u из AppBundle: User» или сделаю $ this-> getUser() и выведу на json, я получаю каждый другой связанный элемент в результате который является разновидностью огромного набора данных и раздражает. Отсюда мой первоначальный вопрос: как это можно предотвратить и выбрать только связанные вещи? – Sangit
Предоставьте код, который показывает, как вы генерируете ответ json. –
Я поставил полный код в вопрос – Sangit