Symfony2的自定义存储库问题 - 注意:未定义的偏移量:0

时间:2013-06-27 12:06:09

标签: php symfony doctrine

我试图将查询移到自定义存储库类中。这是我到目前为止所做的事情

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"),命名空间和文件夹是正确的,我从电影到用户的关系是当我在控制器中进行查询时,此操作正确。

我一直遇到的主要错误是:

  

注意:未定义的偏移量:/Applications/MAMP/htdocs/symfony2test/vendor/doctrine/orm/lib/Doctrine/ORM/QueryBuilder.php第271行

查询构建器中的第271行是:

public function getRootAlias()
{
    $aliases = $this->getRootAliases();
    return $aliases[0];
}

我不知道从哪里开始,任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

快速提示,函数getRootAlias()返回为查询创建的别名,在您的情况下为“m”。

如果我做了一个有根据的猜测,我会尝试这个(注意选择语法):

$query = $qb->select('m.title, m.img, u.username')
            ->where('m.title = :movie')
            ->leftJoin('m.user', 'u')
            ->setParameter('movie', $movie)
            ->getQuery();

您已经在EntityRepository中,您无需致电$this->getEntityManager()

只是做: $qb = $this->createQueryBuilder('m');

那应该解决你的问题。