我真的是 Symfony 2 和 Doctrine 的新手,并且有一个简单的问题:
我的存储库中有一个非常简单的代码:
<?php
namespace BakeryIT\BakeryBundle\Entity;
use Doctrine\ORM\EntityRepository;
class ProjectRepository extends EntityRepository
{
public function findHistory(){
return $this->getEntityManager()
->createQueryBuilder()
->select('p')
->from('Project','p')
->getQuery()
->getResult();
}
}
我的控制器中有两个简单的功能:
<?php
namespace BakeryIT\BakeryBundle\Controller;
/*
...
*/
class ProjectController extends Controller
{
public function indexAction()
{
return $this->index('Project', 'findHistory');
}
}
控制器看起来像这样:
public function index($entity, $query = 'findAll')
{
$repository = $this->getDoctrine()
->getRepository('BakeryBundle:'.$entity);
$data = $repository->$query();
return $this->render('BakeryBundle:'.$entity.':index.html.twig',
array('data' => $data));
}
此代码向我抛出语义错误[Semantical Error] line 0, col 14 near 'Project p': Error: Class 'Project' is not defined。
另一方面,如果我在存储库中更改此行,一切都会完美运行:
->from('Project','p')
至
->from('BakeryIT\BakeryBundle\Entity\Project','p')
我不知道为什么这个例子在第一种情况下不起作用。我的 BakeryIT\BakeryBundle\Entity\Project 中的命名空间是这样设置的:
namespace BakeryIT\BakeryBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Project
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="BakeryIT\BakeryBundle\Entity\ProjectRepository")
*/
class Project
{
/*
..
*/
}