首先要说我对 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\BlogBundle\Repository 命名空间中!最奇怪的是,它可以毫无问题地找到“BloggerBlogBundle:Blog”存储库,但没有找到评论!
两者都位于同一个文件夹中(Bundles\Blogger\BlogBundle\Repository),并且两者的声明方式完全相同:
评论库:
namespace Blogger\BlogBundle\Repository;
class CommentRepository extends EntityRepository
博客存储库:
namespace Blogger\BlogBundle\Repository;
class BlogRepository extends EntityRepository
我是如何让它发挥作用的
我将 CommentRepository 文件移动到“Entity”目录并将其命名空间更改为 Blogger\BlogBundle\Entity。那时它工作得很好。完全没有问题。但是这样我就被分散在目录和命名空间中的存储库困住了......
为什么 Doctrine 在 Blogger\BlogBundle\Repository 中找到 Blog repo 而不是 Comment repo?