为什么Doctrine MongoDB ODM总是返回NULL?
问题描述:
我在安装为什么Doctrine MongoDB ODM总是返回NULL?
/**
* @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
--return $this->mongoCollection->batchInsert($a, $options);
++return $this->mongoCollection->batchInsert($a);
有人扔一个警告(batchInsert期望的是1个参数,2个given9那会停止保存文档使用@来抑制警告并没有帮助现在的问题是$ options参数是安全写入所必需的,我不知道如何解决这个问题
答
您需要以升级你的Mongo扩展,PHP文档声明第二个参数在v1.0.5中增加了。
http://us3.php.net/manual/en/mongocollection.batchinsert.php
学说ODM mongodb不稳定,我有一些问题,祝你好运! :) – julesbou
你的用户文档是怎样的? –
@jules我应该使用Mandango/Propel吗?但我不喜欢活跃的记录,我想继续使用Data Mapper =( – HappyDeveloper