私のユーザエンティティは、彼のpostcommentsを連想すべての関連付けずにエンティティを選択するために、教義を得る
oneToMany:
images:
targetEntity: Image
mappedBy: user
posts:
targetEntity: Post
mappedBy: user
fetch: EXTRA_LAZY
postcomments:
targetEntity: Postcomment
mappedBy: user
fetch: EXTRA_LAZY
私は彼のすべての記事や画像を特定のユーザーを選択したいのカップルを持っていますが、ありません。これは私が使用しているクエリです:
$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を選択して結合を削除するのと同じです。
結果に含まれる特定の関連付けのみを選択するにはどうすればよいですか?
は、ここで私はあなたが教義の遅延ローディング機能に惑わさていると思うのAPI呼び出し
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の結果をjsonとしてapiに出力する必要があります。結合を追加するかどうかは関係ありません。常に関連するすべてのエンティティをユーザーに関連付けて出力するので、基本的には私はまだAppBundleからUserを選択するか、$ this-> getUser()を実行してjsonに出力しても、結果に他のすべての関連要素がありますこれはデータの巨大なセットであり、迷惑なものです。それで私の最初の質問は、どうやってこれを防ぐことができ、関連するものだけを選ぶことができますか? – Sangit
jsonの応答の生成方法を示すコードを提供します。 –
私は質問 – Sangit