Почему Doctrine MongoDB ODM всегда возвращает NULL? - PullRequest
1 голос
/ 28 ноября 2011

У меня проблемы с выполнением этой работы в новой установке

    /**
     * @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
    }

Я не могу прочитать данные, которые, как я знаю, находятся в БД.И я тоже не могу сохранить данные (хотя я могу получить новый сгенерированный идентификатор)

Примечание: нативный PHP Mongo работает просто отлично.

Ответы [ 2 ]

0 голосов
/ 24 декабря 2011

Вам необходимо обновить расширение Mongo.В документации PHP указано, что второй параметр был добавлен в v1.0.5.

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

0 голосов
/ 28 ноября 2011

Проблема частично решена.

Изменена эта строка: ./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 необходим для безопасного пишет, и я не знаю, как это исправить.

...