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();