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


Custom repository problems with Symfony2 - Notice: Undefined offset: 0

我正试图将查询移动到自定义存储库类中。以下是到目前为止我得到的

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/domaine/orm/lib/doctrine/OM/QueryBuilder.php行271 中的0

查询生成器中的第271行是这样的:

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

我不知道从这里到哪里去,任何帮助都将不胜感激。

快速提示,函数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');

这应该能解决你的问题。