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