2013-04-10 73 views
1

一個有一點與學說查詢和QueryBuilder的疑惑。Doctriine查詢VS的QueryBuilder Symfony的2.0

我用簡單的查詢,在庫,如:

$em = $this->getEntityManager(); 
$dql = "select X from ApuestaBundle:Apuesta X ORDER BY X.Jornada DESC"; 
$query = $em->createQuery($dql); 
$entity = $query->getResult(); 

但我必須從管理類索納塔的修改功能「的createQuery($上下文=‘名單’)」來篩選實體顯示了,我不得不使用查詢生成器是這樣的:

public function createQuery($context = 'list'){ 
    $query = $this->getModelManager()->createQuery($this->getClass(), 'entity'); 

    $query->select ('e'); 
    $query->from($this->getClass(), 'e'); 
    $query->from('CoreBundle\Entity\Resource', 'r'); 
    $query->where('e.id = r.id AND r.company = :company'); 
    $query->setParameter('company', 1); 

    return $query; 
} 

所以,這裏是我的問題,這是使用查詢或QueryBuilder的的差異。因爲這樣,我無法調用Repository的函數來更改Admin類的函數createQuery。

謝謝!

回答

0

回答你第一個問題,差異,一般原則條款如下:

一個查詢是一個表示DQL查詢的對象。其上的方法主要與水合作用和獲得查詢結果有關。 getResult(),getArrayResult(),getSQL()

A QueryBuilder是建立DQL查詢的流暢方式。這些方法主要涉及添加/更改DQL子句:例如選擇(),從(),其中()

不過,我不知道索納塔ProxyQueryInterface,這是從ModelManagerInterface返回::的createQuery()。