Doctrine 2,未定义的实体方法findOneBy*

Dam*_*che 6 symfony doctrine-orm

我有一个奇怪的问题.这是错误消息:

调用未定义的方法 MyProject\BlogBundle\Entity\Blog::findOneById()

我已经设置了映射,实体类是使用控制台创建的,我已经更新了数据库中的模式.可能导致此问题的原因是什么?

我正在使用symfony2.这是一行:

$blogRepo = $this->get('myproject.blog.repository.blog');  
$blog = $blogRepo->findOneById($id);  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Mar*_*ues 8

findOneById不存在,试试

$ blogRepo-> findOneBy(array('id'=> $ id));

其中"id"是您实体中的现有字段.

您可以在此处查看Doctrine的类文档:EntityRepository

编辑:看起来像findOneById确实存在,只要该实体具有字段"Id".检查文档.感谢Ryall指出它


igo*_*orw 5

什么是服务定义myproject.blog.repository.blog?看起来你正在将它映射到MyProject\BlogBundle\Entity\Blog它应该是它MyProject\BlogBundle\Entity\BlogRepository.

您也可以通过EntityManager动态创建一个Repository类,而不是创建自己的Repository类.

$user = $em->getRepository('MyProject\Domain\User')->find($id);
Run Code Online (Sandbox Code Playgroud)

甚至更短:

$user = $em->find('MyProject\Domain\User', $id);
Run Code Online (Sandbox Code Playgroud)

取自Doctrine2 ORM文档.