0

首先要说我对 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

它实际上只有 1 行代码困扰我!我有一个 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

关键点!: 类'Blogger....**实体**

它在 Entity 中搜索!

我的存储库存储在 Blogger\BlogBu​​ndle\Repository 命名空间中!最奇怪的是,它可以毫无问题地找到“BloggerBlogBu​​ndle:Blog”存储库,但没有找到评论!

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

评论库:

namespace Blogger\BlogBundle\Repository;

class CommentRepository extends EntityRepository

博客存储库:

namespace Blogger\BlogBundle\Repository;

class BlogRepository extends EntityRepository

我是如何让它发挥作用的

我将 CommentRepository 文件移动到“Entity”目录并将其命名空间更改为 Blogger\BlogBu​​ndle\Entity。那时它工作得很好。完全没有问题。但是这样我就被分散在目录和命名空间中的存储库困住了......

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

4

1 回答 1

1

您的博客实体是否有 @ORM/Repository-annotation 而您的评论实体没有?

于 2012-12-04T13:58:07.303 回答