1

我无法在全新安装中完成这项工作

    /**
     * @Route("/bla")
     * @Template()
     */
    public function blaAction()
    {
        $repository = $this->get('doctrine.odm.mongodb.document_manager')->getRepository('CompanySomeBundle:User');
        $user = $repository->findOneByUsername('bla');
        var_dump($user); // NULL
        return new Response($user->getUsername()); // Fatal Error, user is not an object
    }

    /**
     * @Route("/save-bla")
     */
    public function saveBlaAction()
    {
        $user = new \Company\SomeBundle\Document\User;
        $user->setUsername('bla');
        $dm = $this->get('doctrine.odm.mongodb.document_manager');
        $dm->persist($user);
        $dm->flush();
        return new Response($user->getId()); // prints a new ID as expected, but nothing is actually saved to the DB
    }

我无法读取我知道在数据库中的数据。而且我也无法保存数据(即使我可以获得新生成的 ID)

注意:PHP 的原生 Mongo 工作得很好。

4

2 回答 2

0

问题部分解决。

更改了这一行:./vendor/doctrine-mongodb/lib/Doctrine/MongoDB/Collection.php #146

--return $this->mongoCollection->batchInsert($a, $options);
++return $this->mongoCollection->batchInsert($a);

它抛出了一个警告(batchInsert 正好需要 1 个参数,2 个给定 9 会阻止文档被保存。用 @ 抑制警告没有帮助。现在的问题是 $options 参数是安全写入所必需的,并且我不知道如何解决这个问题。

于 2011-11-28T08:11:06.587 回答
0

你需要升级你的 Mongo 扩展。PHP 文档声明第二个参数是在 v1.0.5 中添加的。

http://us3.php.net/manual/en/mongocollection.batchinsert.php

于 2011-12-24T05:30:47.017 回答