当前位置:  开发笔记 > 编程语言 > 正文

存储库中的Symfony DQL查询

如何解决《存储库中的SymfonyDQL查询》经验,为你挑选了1个好方法。

嗨,大家好,我有一个问题的问题.我正在Symfony 2.7上构建应用程序,我想在存储库中进行查询,但是当我使它抛出异常时说:

未定义的方法'getDoctrine'.方法名称必须以findBy或findOneBy开头!

这是存储库中的代码:

namespace George\ObjectsBundle\Entity;

/**
 * ObjectRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class ObjectRepository extends \Doctrine\ORM\EntityRepository
{
public function getOggallery()
{
    $em = $this->getDoctrine()->getManager();
    $query = $this->createQuery("SELECT o, a FROM George\ObjectsBundle\Entity\Object  o JOIN o.ogallery a WHERE a.ord = 0");
    $objects = $query->getResult();

    return $objects;
}

}

但是当我在Controller方法中返回代码时,它可以工作.

 $query = $em->createQuery("SELECT o, a FROM George\ObjectsBundle\Entity\Object  o JOIN o.galleries a WHERE a.ord = 0");
 $objects = $query->getResult();

为什么此代码不能与存储库中的Doctrine Entity管理器一起使用?



1> elkorchi ana..:

您收到此错误是因为您正在调用不存在的存储库方法getDoctrine().试试这个:

class ObjectRepository extends \Doctrine\ORM\EntityRepository
{
    public function getOggallery()
    {
        $em = $this->getEntityManager();
        $query = $this->createQuery("SELECT o, a FROM George\ObjectsBundle\Entity\Object  o JOIN o.ogallery a WHERE a.ord = 0");
        $objects = $query->getResult();

        return $objects;
    }    
}


它根本不需要`$ em`它已经绑定到QueryBuilder了
推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有