2017-09-23 121 views
0

我想从DQL查询中获取对象。 这里是我的代码:如何在Symfony2中执行DQL查询?

$em = $this->getDoctrine()->getRepository(Item::class); 

$items = $em->createQuery($getQuery); 
$items = $query->getResult(); 

$getQuery = DQL query string : SELECT from Entity WHERE ... 

我收到错误:未定义的方法 '的createQuery'。方法名称必须以findBy或findOneBy开头! 我不明白,bcz这个例子是从官方文档复制的。 如何在queryBuilder/createQuery中执行DQL查询?

+0

'Item :: class'实体类是否有一个存储库? –

+0

是的。 namespace AppBundle \ Repository; 使用Doctrine \ ORM \ EntityRepository; /** * ItemRepository * *该类由Doctrine ORM生成。在下面添加您自己的定制 *存储库方法。 */ class ItemRepository extends EntityRepository { } – Mohim

+0

getDoctrine()是什么? –

回答

0

实体管理器有一个createQuery方法。

$em = $this->getDoctrine()->getManager(); 

$query = $em->createQuery($getQuery); 

$items = $query->getResult(); 

存储库有一个createQueryBuilder方法。

$em = $this->getDoctrine()->getManager(); 

$qb = $em->getRepository(Item::class)->createQueryBuilder(); 
$query = qb->select('[columns]')->from('Entity')->where('[condition]')->getQuery(); 
$items = $query->getResult(); 
+0

取得一些进展。用什么方法得到结果? 试图调用类“Doctrine \ ORM \ EntityManager”中名为“getResult”的未定义方法。 500内部服务器错误 - UndefinedMethodException – Mohim

+0

我的IDE没有看到方法createQuery。也许用什么错误? – Mohim

+0

方法createQuery和执行不起作用。 – Mohim