2016-07-22 2 views
0

ParamConverterを使用してオブジェクトを取得すると、そのインスタンスが初期化されていないように見えます。ParamConverterは初期化されていないオブジェクトをシリアル化します

オブジェクトは部分的にロードされています。つまり、その関係はデータベースからフェッチされません。

私は例を挙げてみましょう:私は与えられたArticleCommentのコントローラをしたい

Article 
    title 
    body 
    comments (Collection of Comment) 

場合、私はこの

/** 
* @Route("/article/{id}/comments", 
*  name="article_comments", 
*  defaults={"_format": "json"} 
*) 
* @ParamConverter("article", class="AppBundle:Article") 
*/ 
public function purchaseOrderGetAction(Article $article) 
{ 
    return new JsonResponse($article->getComments()); 
} 

これはArticleので、何も送信しませんにしてください完全にロードされていないようです。あなたが見ることができるように

dump($article); 

DefaultController.php on line 42: 
Article {#1186 ▼ 
    -id: 1 
    -title: "My awesome article" 
    -body: "Here is the story of..." 
    -comments: PersistentCollection {#1224 ▼} 
    -snapshot: [] 
    -owner: Article {#1186} 
    -association: array:15 [ …15] 
    -em: EntityManager {#936 …11} 
    -backRefFieldName: "article" 
    -typeClass: ClassMetadata {#1213 …} 
    -isDirty: false 
    #collection: ArrayCollection {#1225 ▼ 
     -elements: [] 
    } 
    #initialized: false 
    } 
} 

を与え、detailsフィールドにロードされたものは何もありません。

オブジェクト全体を手動で読み込む必要がありますか、またはデータベースから必要なcommentsだけを読み込む方法がありますか?

答えて

0

私はそれは+ 1 Commentを持っているとして、それは実際にArticleのためにできるだけ多くのクエリを生成しますが、私はより良い見つけることができませんでした

return new JsonResponse($article->getComments()->toArray()); 

detailsの遅延ロードを余儀なくされました。

関連する問題