Doctrine orm 条令2,未定义实体法findOneBy*
我有一个奇怪的问题。以下是错误消息: 调用未定义的方法Doctrine orm 条令2,未定义实体法findOneBy*,doctrine-orm,symfony,Doctrine Orm,Symfony,我有一个奇怪的问题。以下是错误消息: 调用未定义的方法MyProject\BlogBundle\Entity\Blog::findOneById() 我已经设置了映射,实体类是使用控制台创建的,我已经更新了数据库中的模式。是什么导致了这个问题 我用的是symfony2。这是一句话: $blogRepo = $this->get('myproject.blog.repository.blog'); $blog = $blogRepo->findOneById($id); 有什
MyProject\BlogBundle\Entity\Blog::findOneById()
我已经设置了映射,实体类是使用控制台创建的,我已经更新了数据库中的模式。是什么导致了这个问题
我用的是symfony2。这是一句话:
$blogRepo = $this->get('myproject.blog.repository.blog');
$blog = $blogRepo->findOneById($id);
有什么想法吗?myproject.blog.repository.blog的服务定义是什么?看起来您正在将它映射到
MyProject\BlogBundle\Entity\Blog
,而实际上它应该是MyProject\BlogBundle\Entity\BlogRepository
您也可以让EntityManager动态创建一个存储库类,而不是创建自己的存储库类
$user = $em->getRepository('MyProject\Domain\User')->find($id);
甚至更短:
$user = $em->find('MyProject\Domain\User', $id);
取自。findOneById不存在,请重试 $blogRepo->findOneBy(数组('id'=>$id)) 其中“id”是实体中的现有字段 您可以在此处查看条令的类别文档: 编辑:只要实体有一个字段“Id”,findOneById看起来就存在。感谢Ryall指出这一点试试这个
$blogRepo = $this->getRepository('myproject.blog.repository.blog');
$blog = $blogRepo->findOneById($id);
getRepository是的,而且
$entity=$em->getRepository('VendorSomeBundle:Post')->findOneById($id)
也可以。但是您必须确保Post实体具有该属性。请务必记住,存储库不是symfony1的*表
类的等价物。实体应该已经知道映射、关系和首选项。findOneById
是一种有效的魔术方法,假设实体上有一个id
字段。我想理解你所说的MyProject\Domain\*
这是一个实体
类吗?是的,MyProject\Domain\User
是一个实体。