2017-09-23 54 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