1

我在 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();

reciever、created、id 和 subject 是我的消息实体的字段的一部分。我不需要指定我从哪个实体中选择。我不断得到的错误是这样的......

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

我不确定状态字段路径表达式是什么或语法可能是什么。似乎一切都应该是正确的。

4

3 回答 3

8

当您使用该select()方法时,您会覆盖默认的$this->createQueryBuilder('m'). 这就是你丢失m别名的原因。为避免这种情况,请在方法中使用addSelect()或指定:aliasfrom()

->from('Bundle:Entity', 'ALIAS')
于 2013-09-24T12:06:48.787 回答
4

你有这样的东西:=?

 $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')

于 2013-09-24T06:13:58.253 回答
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();
于 2013-09-24T06:22:14.587 回答