2011-11-25 23 views
10
$shops = $this->em->getRepository('models\Shop')->findAll(); 

エンティティで配列を与えますが、配列として配列が必要です。クエリの結果を配列の配列に変換する

エンティティを配列に変換するにはどうすればよいですか?

+0

*エンティティとしての配列*エンティティの外観はどのように見え、配列はどのように見えますか? – hakre

答えて

12

私は同じ問題がありました。 return get_object_vars($this)は、内部の教義オブジェクト/プロパティも変換するので、良い解決策ではありません。いくつかの研究の結果、このクラスが見つかりました:EntitySerializerあなたのエンティティからクリーンな配列またはJSONを作成し、不要なアイテムを削除します。次のコード:

$patientProfile = $this->em->getRepository('Entities\Patientprofile')->findOneByuserid('2222222'); 
$entitySerializer=new Bgy\Doctrine\EntitySerializer($this->em); 
$patientProfile=$entitySerializer->toArray($patientProfile); 
+0

Zend Framework 2のインストール方法は?あなたは馬鹿のように説明できますか? :) – Arvangen

+0

これは、これを行うための最良の方法です。よくやった! – manix

16

Doctrineでは、クエリを実行するときに水分モードを指定できるため、返される結果のデータ型を変更できます。この場合、Query :: HYDRATE_ARRAYが必要です。リポジトリにあるデフォルトのfindAll()メソッドでこれを指定することはできません。あなた自身のDQLを書く必要があります。

あなたは配列としてentitesの収集が必要な場合:あなたは、配列、例えばとして単一のエンティティが必要な場合は

$query = $em->createQuery('SELECT u FROM User u'); 
$entites = $query->execute(array(), Query::HYDRATE_ARRAY); 

// If you don't have parameters in the query, you can use the getResult() shortcut 
$query = $em->createQuery('SELECT u FROM User u'); 
$entities = $query->getResult(Query::HYDRATE_ARRAY); 

を。特定のIDのために:

$query = $em->createQuery('SELECT u FROM User u WHERE u.id = ?1'); 
$query->setParameter(1, $id); 
$entity = $query->getSingleResult(Query::HYDRATE_ARRAY); 

これらの方法はQuery、およびAbstractQuery上で定義されています。

+4

しかし、抽象EntityRepository-> findAll()メソッドを使用することは不可能です。 –

関連する問題