2016-07-03 15 views
0

APIでFOSrestbundleを使用してオブジェクトをJSONとして取得します。 は、だから私のコントローラは、そのようになります。FOSRestBundleシリアライザの結果が多すぎる

{ 
    "title": "My Article", 
    "comments": [ 
     { 
      "content": "my first comment", 
      "added_by": { 
       "username": "John" 
      } 
     }, 
     { 
      "content": "my second comment", 
      "added_by": { 
       "username": "Smith" 
      } 
     } 
    ] 
} 

を、私はそれをレンダリングするとき、そこにある:

public function getArticleAction($id) 
    { 
     $article = $this->getDoctrine() 
      ->getRepository('ApiBundle:Article') 
      ->find($id); 
     return $this->handleView($this->view($article)); 
    } 

そして、私の問題は、記事では、コメントが含まれていることで、ユーザーが追加したので、私のJSONはそのように見えますあまりにも多くのクエリ、各コメントのために、ユーザー情報を取得するためのクエリがあります。

クエリビルダとたくさんの結合で記事オブジェクトを取得する必要がありますか(単なる例であるためですが、より多くの関係があるため)、すべての情報を1つのクエリで取得するか、回避する必要がありますそれ ?

+0

私はsf2で安らかなapisに関する深い知識を持っていませんが、jmsserailserを使って排除ポリシーについてgoogleでグラフから必要なものだけを含めるべきだと思います。//williamdurand.fr/2012/08/02/rest -apis-with-symfony2-the-right-way /#get-what –

答えて

0

Doctrineを使用してデータを照会しているときは、added_byの関係でEAGERローディングを使用する必要があります。この方法で、シリアライズに必要なすべてのデータを一度にクエリします。

関連する問題