2013-09-24 92 views
1

我在Symfony2 Repository中執行以下查詢。查詢看起來像如何使用doctrine 2查詢生成器來選擇字段

    $q = $this 
        ->createQueryBuilder('m') 
        ->select(array('m.reciever','m.created','m.id','m.subject')) 
        ->where('m.reciever = ?1') 
        ->orderBy('m.id','DESC') 
        ->setMaxResults('?2') 
        ->setFirstResult('?3') 
        ->setParameter(1,$id) 
        ->setParameter(2,$itemsPerPage) 
        ->setParameter(3,$offset) 
        ->getQuery(); 

其中reciever,created,id和主題是我的消息實體的字段的一部分。我不需要指定我從哪個實體中選擇。我不斷收到的錯誤是這樣的...我不確定什麼是狀態字段路徑表達式或語法可能是什麼。我不知道什麼是狀態字段路徑表達式或語法可能是什麼。我不知道什麼是狀態字段路徑表達式或語法可能是什麼。我不知道什麼是狀態字段路徑表達式或語法可能是什麼。似乎一切都應該是正確的。

回答

2

你有這樣的事情:=?

$q = $this 
       ->createQueryBuilder() 
       ->select('m.reciever, m.created ,m.id , m.subject') 
       ->from('/Acme/Entity/DemoEntity', 'm') 
       ->where('m.reciever = ?1') 
       ->orderBy('m.id','DESC') 
       ->setMaxResults('?2') 
       ->setFirstResult('?3') 
       ->setParameter(1,$id) 
       ->setParameter(2,$itemsPerPage) 
       ->setParameter(3,$offset) 
       ->getQuery(); 

林不知道,但我想你使用數組語法只有當你有多個表一起加入:陣列(「m.reciever,m.created」,「p.user,p.id」 )

1

我希望這將幫助ü..

$em = $this->getDoctrine()->getManager(); 
    $q = $em->createQueryBuilder() 
      ->select('m.reciever,m.created,m.id,m.subject') 
      ->from('bundle:entity','m') 
      ->where('m.reciever = ?1') 
      ->orderBy('m.id','DESC') 
      ->setMaxResults('?2') 
      ->setFirstResult('?3') 
      ->setParameter(1,$id) 
      ->setParameter(2,$itemsPerPage) 
      ->setParameter(3,$offset) 
      ->getQuery(); 
6

當您使用select()方法,覆蓋了默認的一個是在$this->createQueryBuilder('m')。這就是爲什麼你失去了m別名。爲避免這種情況,請使用addSelect()或在from()方法中指定alias

->from('Bundle:Entity', 'ALIAS') 
相關問題