Php 为什么MongoDB ODM总是返回NULL?

Php 为什么MongoDB ODM总是返回NULL?,php,mongodb,symfony,doctrine-odm,Php,Mongodb,Symfony,Doctrine Odm,我很难在新安装中运行此功能 /** * @Route("/bla") * @Template() */ public function blaAction() { $repository = $this->get('doctrine.odm.mongodb.document_manager')->getRepository('CompanySomeBundle:User'); $user = $re

我很难在新安装中运行此功能

    /**
     * @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工作正常。

问题部分解决

更改了此行:./vendor/doctrine mongodb/lib/doctrine/mongodb/Collection.php#146


它发出了警告(batchInsert只需要1个参数,2个给定的参数9就可以阻止保存文档。用@来抑制警告没有帮助。现在的问题是安全写入需要$options参数,我不知道如何解决这个问题。

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


Orient ODM mongodb不稳定,我遇到了一些问题,祝你好运!:)你的用户文档看起来怎么样?@jules我应该改用Mandango/Propel吗?但我不喜欢active record,我想继续使用数据映射器=(
--return $this->mongoCollection->batchInsert($a, $options);
++return $this->mongoCollection->batchInsert($a);