Php 如何在symfony存储库中访问create查询方法

Php 如何在symfony存储库中访问create查询方法,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有类用户存储库 class userRepository extends EntityRepository { function getuserData($id) { $query = $this->createQuery(' SELECT c FROM AcmeBundle:User c WHERE c.id = :id ORDER BY c.id ASC ')

我有类用户存储库

class userRepository extends EntityRepository
{

    function getuserData($id)
    {
        $query = $this->createQuery('
                SELECT c FROM AcmeBundle:User c 
                WHERE c.id = :id ORDER BY c.id ASC
            ')
            ->setParameter('id', $id);

        return $query->getResult();
    }
}
我得到了这个错误

未定义的方法“createQuery”。方法名称必须以其中一个开头 findBy或findOneBy


我知道这个答案已经很晚了,但是需要在用户实体中定义userRepository类

use Doctrine\ORM\Mapping as ORM
/**
 * @ORM\Entity(repositoryClass="NameOfBundle\Repository\UserRepository")
class User
{
    ...
}

当我们在存储库工作时

$em = $this->getEntityManager(); //wont work in repository
$em->createQueryBuilder($sql); 
你必须使用

$conn = $this->getEntityManager()->getConnection();     
$stmt = $conn->prepare($sql);

方法
CreateQuery
属于实体管理器,而不是
控制器
的类

现在我在非对象上调用成员函数CreateQuery()时出现了此错误可能出现在另一个地方抱歉,我没有理解您的意思此错误可能出现在另一个地方,不在
$em-createQuery()中。
不,不,它只在那里,如果我删除这些行,那么页面工作正常
$conn = $this->getEntityManager()->getConnection();     
$stmt = $conn->prepare($sql);