簡體   English   中英

如何使用教義2查詢生成器選擇字段

[英]How to select fields using doctrine 2 query builder

我在Symfony2存儲庫中執行以下查詢。 查詢看起來像

                 $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();

收件人,創建的ID和主題是我的郵件實體中字段的一部分。 我不需要指定要從中選擇的實體。 我不斷收到的錯誤是這樣的...

[Semantical Error] line 0, col 12 near 'reciever, m.created,': Error: Invalid PathExpression. Must be a StateFieldPathExpression. 

我不確定狀態字段路徑表達式是什么或語法可能是什么。 似乎一切都應該正確。

使用select()方法時,將覆蓋$this->createQueryBuilder('m')的默認方法。 這就是為什么您丟失m別名的原因。 為了避免這種情況,請使用addSelect()或在from()方法中指定alias

->from('Bundle:Entity', 'ALIAS')

你有這樣的東西:=?

 $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();

我不確定,但是我認為只有在將多個表連接在一起時才使用數組語法: array('m.reciever,m.created','p.user,p.id')

希望對您有幫助。

    $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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM