2014-01-19 10 views
10

::未定義のメソッドはDoctrine \ ORM \ QueryBuilderの呼び出しのgetResult():Symfony2の:コードで

$qb = $entityManager->createQueryBuilder(); 
$qb->select('cat')->from('BuyAndSellSiteBundle:Category ', 'cat'); 
$qb->getQuery(); 
$a =$qb->getResult(); 

私は例外を取得:

FatalErrorException: Error: Call to undefined method Doctrine\ORM\QueryBuilder::getResult() in C:\xampp\htdocs\buySell\src\BuyAndSell\SiteBundle\Controller\DefaultController.php line 

答えて

15

これは理にかなっています。 QueryBuilder自体は変更されませんので、あなたはgetQuery()呼び出しの結果を格納する必要があります。

$queryBuilder = $entityManager->createQueryBuilder(); 
$queryBuilder->select('cat')->from('BuyAndSellSiteBundle:Category ', 'cat'); 

// get the Query from the QueryBuilder here ... 
$query = $qb->getQuery(); 

// ... then call getResult() on the Query (not on the QueryBuilder) 
$result = $query->getResult(); 
+0

正解! 'QueryBuilder'は' getResult() 'メソッドを持ちません。' QueryBuilder'オブジェクトで 'getQuery()'メソッドを呼び出すことで得られる 'Query'インスタンスだけがこのメソッドを提供します。 '$ qb'は** Q ** uery ** B ** uilderのインスタンスです。あなたの答えの変数名を編集して、それをもっと明白にしました:) – nifr

+0

ありがとう!これは役に立ちました – LanMan

+0

詳細な編集のために@nifrありがとうございました;) –

3

変更するには:

$a = $qb->getQuery()->getResult(); 

// or 

$q = $qb->getQuery(); 
$a = $q->getResult();