我有类用户存储库
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!
根据文档
$em = $this->getEntityManager();
$query = $em->createQuery('
SELECT p FROM AcmeStoreBundle:Product p
WHERE p.price > :price
ORDER BY p.price ASC
')
->setParameter('price', '19.99');
$products = $query->getResult();
我知道这个答案已经很晚了,但您的userRepository类需要在您的User实体中定义。
use DoctrineORMMapping as ORM
/**
* @ORMEntity(repositoryClass="NameOfBundleRepositoryUserRepository")
class User
{
...
}
当我们在仓库工作时
$em = $this->getEntityManager(); //wont work in repository
$em->createQueryBuilder($sql);
你必须使用
$conn = $this->getEntityManager()->getConnection();
$stmt = $conn->prepare($sql);
阅读更多
方法CreateQuery
属于实体管理器,而不是Controller
的类