我有一个奇怪的问题。以下是错误消息:
调用未定义的方法MyProject\BlogBundle\Entity\Blog::findOneById()
我已经设置了映射,实体类是使用控制台创建的,我已经更新了数据库中的模式。可能导致这个问题的原因是什么?
我正在使用symfony2。这是一行:
$blogRepo = $this->get('myproject.blog.repository.blog');
$blog = $blogRepo->findOneById($id);
有什么想法吗?
答案 0 :(得分:8)
findOneById不存在,请尝试
$ blogRepo-> findOneBy(array('id'=> $ id));
其中“id”是您实体中的现有字段。
您可以在此处查看Doctrine的课程文档:EntityRepository
编辑:看起来像findOneById确实存在,只要该实体具有字段“Id”即可。 Check the docs。感谢Ryall指出它
答案 1 :(得分:5)
myproject.blog.repository.blog
的服务定义是什么?看起来您将它映射到MyProject\BlogBundle\Entity\Blog
,而它确实应该是MyProject\BlogBundle\Entity\BlogRepository
。
而不是创建自己的Repository类,您也可以通过EntityManager动态创建一个。
$user = $em->getRepository('MyProject\Domain\User')->find($id);
甚至更短:
$user = $em->find('MyProject\Domain\User', $id);
答案 2 :(得分:0)
试试这个
$blogRepo = $this->getRepository('myproject.blog.repository.blog');
$blog = $blogRepo->findOneById($id);
<强> getRepository 强>