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

时间:2012-12-04 13:54:42

标签: php symfony doctrine

首先要说我对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 \ BlogBu​​ndle \ Repository命名空间中! 最奇怪的是,它发现'BloggerBlogBu​​ndle:Blog'存储库没有问题,但找不到评论!

两者都驻留在同一个文件夹(Bundles \ Blogger \ BlogBu​​ndle \ Repository)中,两者的声明方式完全相同:

CommentRepository:

namespace Blogger\BlogBundle\Repository;

class CommentRepository extends EntityRepository

BlogRepository:

namespace Blogger\BlogBundle\Repository;

class BlogRepository extends EntityRepository

我是如何成功的?

我将CommentRepository文件移动到“Entity”目录,并将其名称空间更改为Blogger \ BlogBu​​ndle \ Entity。它完美地工作。没问题。但是那样,我就被困在通过dirs和名称空间分散的存储库......

为什么Doctrine在Blogger \ BlogBu​​ndle \ Repository中找到Blog repo而不是Comment repo?

1 个答案:

答案 0 :(得分:1)

您的Blog实体是否有@ ORM / Repository-annotation,而您的Comment-entity却没有?