6

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

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

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

我正在使用 symfony2。这是行:

$blogRepo = $this->get('myproject.blog.repository.blog');  
$blog = $blogRepo->findOneById($id);  

有任何想法吗?

4

3 回答 3

8

findOneById 不存在,试试

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

其中“id”是您的实体中的现有字段。

你可以在这里查看 Doctrine 的类文档:EntityRepository

编辑:看起来 findOneById 确实存在,只要实体有一个字段“Id”。检查文档。感谢 Ryall 指出

于 2011-03-30T10:27:39.613 回答
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);

取自Doctrine2 ORM 文档

于 2011-03-25T09:38:30.667 回答
0

尝试这个

$blogRepo = $this->getRepository('myproject.blog.repository.blog');  
$blog = $blogRepo->findOneById($id);  

获取存储库

于 2017-06-28T19:17:14.060 回答