首先要说我对Symfony和Doctrine都很陌生,我正在努力学习它。我找到了这个教程http://tutorial.symblog.co.uk/,它指导您制作自己的博客。问题是,它是为Symfony 2.0设计的,我使用的是2.1.5。因此,我必须解决因Symfony和Doctrine引入的更改而导致的一些问题。
然而,这个问题似乎无法解决正确方式。它的章节非常简短,总共10-15行代码:
http://tutorial.symblog.co.uk/docs/customising-the-view-more-with-twig.html#recent-comments
它实际上只有一行代码让我烦恼! 我有一个带有动作功能的PageController:
public function sidebarAction()
{
$em = $this->getDoctrine()->getEntityManager;
$blogRep = $em->getRepository('BloggerBlogBundle:Blog');
//........ stuff here
$em->getRepository('BloggerBlogBundle:Comment') <--------------- THIS
}
该死的东西似乎不起作用!我收到错误:
Fatal error: Class 'Blogger\BlogBundle\Entity\CommentRepository' not found in /home/igor/Documents/www/igor/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php on line 689
关键是! :Class'Blogger .... ** Entity **
它在实体中搜索!
我的存储库存储在Blogger \ BlogBundle \ Repository命名空间中! 最奇怪的是,它发现'BloggerBlogBundle:Blog'存储库没有问题,但找不到评论!
两者都驻留在同一个文件夹(Bundles \ Blogger \ BlogBundle \ Repository)中,两者的声明方式完全相同:
CommentRepository:
namespace Blogger\BlogBundle\Repository;
class CommentRepository extends EntityRepository
BlogRepository:
namespace Blogger\BlogBundle\Repository;
class BlogRepository extends EntityRepository
我将CommentRepository文件移动到“Entity”目录,并将其名称空间更改为Blogger \ BlogBundle \ Entity。它完美地工作。没问题。但是那样,我就被困在通过dirs和名称空间分散的存储库......
为什么Doctrine在Blogger \ BlogBundle \ Repository中找到Blog repo而不是Comment repo?
答案 0 :(得分:1)
您的Blog实体是否有@ ORM / Repository-annotation,而您的Comment-entity却没有?