我在Symfony2 Repository中执行以下查询。查询看起来像
$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.
我不确定状态字段路径表达式是什么或语法可能是什么。似乎一切都应该是正确的。
答案 0 :(得分:6)
使用select()
方法时,会覆盖$this->createQueryBuilder('m')
中的默认方法。这就是你失去m
别名的原因。要避免这种情况,请使用addSelect()
或在alias
方法中指定from()
:
->from('Bundle:Entity', 'ALIAS')
答案 1 :(得分: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')< / em>的
答案 2 :(得分: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();