web-dev-qa-db-ja.com

Doctrine 2エンティティ永続コレクションをZend Framework 2で配列に変換する最良の方法

Doctrine 2エンティティ永続コレクションをZend Framework 2で配列に変換する最良の方法(簡単)は何ですか?配列に変換し、後でJsonViewで出力したいのですが、get_object_varを使用する関数を記述できますが、エンティティに次のエンティティコレクションがある場合は問題です。

よろしく。

15
Łukasz

Zendについては不明ですが、SF2 + Doctrineでは、getValues()メソッドを使用できます。

$asArray = $persistentCollection->getValues();
40

完全にPersistentCollectionまたはグラフ全体のシリアル化を解決する必要があるかどうかを十分に明確にしていないため、答えを2つの部分に分けます。

1- Entityのシリアル化を解決する方法をすでに知っていると仮定すると、PersistentCollectionはtoArray()メソッドを呼び出すことによってEntitiesの配列に変換できます。

2-想定していない場合は、 JMS Serializer などのビルド済みライブラリを使用することをお勧めします。手作業で独自に作成する場合は、EntityManager-> getClassMetadata(get_class($ someEntity))から抽出できるClassMetadataインスタンスを使用し、fieldMappingsおよびassociationMappingsプロパティを反復処理します。

2