2013-09-24 68 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') 
相关问题