当结果应该是一个数组时,为什么我得到一个字典呢?

时间:2012-10-22 14:47:00

标签: php mongodb doctrine-orm doctrine-odm

我在我的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"}

我想要一个数组而不是字典。

任何帮助?

1 个答案:

答案 0 :(得分:1)

我没有太多地讨论ODM,但我怀疑Doctrine在集合上调用key时总是使用toArray作为数组中的键,它使大多数人更容易你想要这样做的情况,特别是因为在dict / hasharray之间没有区别。

如果您需要数字索引数组,请在其上调用array_values

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