Php Symfony2的自定义存储库问题-注意:未定义的偏移量:0
我正在尝试将查询移动到自定义存储库类中。这是我到目前为止得到的Php Symfony2的自定义存储库问题-注意:未定义的偏移量:0,php,symfony,doctrine,Php,Symfony,Doctrine,我正在尝试将查询移动到自定义存储库类中。这是我到目前为止得到的 class MovieRepository extends EntityRepository { public function showMovie($movie) { $em = $this->getEntityManager(); $qb = $em->createQueryBuilder('m'); $query = $qb->select('m.title', '
class MovieRepository extends EntityRepository
{
public function showMovie($movie)
{
$em = $this->getEntityManager();
$qb = $em->createQueryBuilder('m');
$query = $qb->select('m.title', 'm.img', 'u.username')
->where('m.title = :movie')
->leftJoin('m.user', 'u')
->setParameter('movie', $movie)
->getQuery();
return $query->getSingleResult();
}
}
我在我的控制器中这样使用它:
$em = $this->getDoctrine()->getManager();
$result = $em->getRepository('AMovieBundle:Movie')->showMovie($movie);
我确实将@ORM\Entity(repositoryClass=“A\MovieBundle\Entity\MovieRepository”)放在了我的实体中,名称空间和文件夹是正确的,我从电影到用户的关系也是正确的,正如我在控制器中进行查询时所做的那样
我经常遇到的主要错误是:
注意:未定义的偏移量:0 in/Applications/MAMP/htdocs/symfony2test/vendor/doctor/orm/lib/doctor/orm/QueryBuilder.php第271行
查询生成器中的第271行是:
public function getRootAlias()
{
$aliases = $this->getRootAliases();
return $aliases[0];
}
我不知道从这里到哪里去,任何帮助都将不胜感激。一个快速提示,函数
getRootAlias()
返回为查询创建的别名,在您的例子中是“m”
如果我做出有根据的猜测,我将尝试以下方法(注意select语法):
您已经在EntityRepository中,不需要调用$this->getEntityManager()
只要做:
$qb=$this->createQueryBuilder('m')代码>
这应该可以解决您的问题。一个快速提示,函数getRootAlias()
返回为查询创建的别名,在您的示例中为“m”
如果我做出有根据的猜测,我将尝试以下方法(注意select语法):
您已经在EntityRepository中,不需要调用$this->getEntityManager()
只要做:
$qb=$this->createQueryBuilder('m')代码>
这应该可以解决您的问题。好主意,我尝试过,但对我的问题没有帮助,仍然会出现相同的错误。但它看起来更干净,我不知道这是可能的,所以我将从现在开始编写我的select语法。好主意,我尝试了它,但它没有帮助我的问题,仍然得到相同的错误。但它看起来更干净,我不知道这是可能的,所以我将从现在开始编写我的select语法。
$query = $qb->select('m.title, m.img, u.username')
->where('m.title = :movie')
->leftJoin('m.user', 'u')
->setParameter('movie', $movie)
->getQuery();