6

我有类用户存储库

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 开头!

4

4 回答 4

9

根据文档

$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();
于 2012-07-31T06:18:31.063 回答
2

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

use Doctrine\ORM\Mapping as ORM
/**
 * @ORM\Entity(repositoryClass="NameOfBundle\Repository\UserRepository")
class User
{
    ...
}
于 2012-12-09T16:52:53.737 回答
1

当我们在存储库工作时

$em = $this->getEntityManager(); //wont work in repository
$em->createQueryBuilder($sql); 

你必须使用

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

阅读更多

于 2016-12-20T13:13:51.663 回答
0

该方法CreateQuery实体管理器,不是Controller

于 2017-02-28T15:37:42.577 回答