Doctrine+Symfony在错误的命名空间中搜索存储库



首先要说的是,我对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-评论

实际上只有一行代码让我感到困扰!我有一个PageController,里面有一个动作功能:

public function sidebarAction()
{
$em = $this->getDoctrine()->getEntityManager;
$blogRep = $em->getRepository('BloggerBlogBundle:Blog');
//........ stuff here
$em->getRepository('BloggerBlogBundle:Comment') <--------------- THIS
}

这该死的东西好像不起作用!我得到错误:

Fatal error: Class 'BloggerBlogBundleEntityCommentRepository' not found in /home/igor/Documents/www/igor/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php on line 689

关键!:班级博客**实体**

它在实体中搜索!

我的存储库存储在Blogger\BlogBundle\Repository命名空间中!最奇怪的是,它找到了"BloggerBlogBundle:Blog"存储库,但没有找到Comment!

两者都位于同一文件夹(Bundles\Blogger\BlogBundle\Repository)中,并且以完全相同的方式声明:

CommentRepository:

namespace BloggerBlogBundleRepository;
class CommentRepository extends EntityRepository

BlogRepository:

namespace BloggerBlogBundleRepository;
class BlogRepository extends EntityRepository

我是如何做到的

我将CommentRepository文件移到"Entity"目录,并将其命名空间更改为Blogger\BlogBundle\Entity。那就完美了。一点问题都没有。但那样的话,我就会被分散在目录和命名空间中的存储库所困扰。。。。。。

为什么Doctrine在Blogger\BlogBundle\Repository中找到博客回购而不是评论回购?

您的博客实体是否有@ORM/Repository注释,而您的Comment实体没有?