0

PHPアプリでDoctrineを使用して、次のコードを使用して結果セットを返しています

 $dm = $this->get('doctrine.odm.mongodb.document_manager');

        $query = $dm->createQueryBuilder('SomeBundle:Listing')
        ->select('title')
        ->field('userId')->equals(1);

        $listings = $query->getQuery()->execute();
        $listings_array = $listings->toArray(); <--- WHY NOT RETURNING AN ARRAY?????


            $data = array('success'=>true,'listings' => $listings_array, 'displaymessage' => $classifieds->count(). " Listings Found");

出てくるのは次のとおりです。

{"success":true,"listings":{"50831582253b4acf09000000":{"id":"50831582253b4acf09000000","title":"fddfds","assets":[],"discussions":[]}},"displaymessage":"1 Listings Found"}

辞書ではなく配列が必要です。

何か助けはありますか?

4

1 に答える 1

1

私は ODM をいじったことはあまりありませんが、Doctrine はコレクションをkey呼び出すときに常に for を配列のキーとして使用しているのではないかと思います。 /と のtoArray間に PHP の区別はありません。dicthasharray

array_values数値でインデックス付けされた配列が必要な場合は、それを呼び出します。

$data = array(
  'success'=>true,
  'listings' => array_values($listings_array), 
  'displaymessage' => $classifieds->count(). " Listings Found"
);
于 2012-10-22T15:00:45.543 に答える