4

我正在使用 Symfony2 和 Doctrine2 开发应用程序。我也使用 Doctrine 的 QueryBuilder。我有这个查询:

public function getInterpDesberdinak($MarkId)
    {
          $qb = $this->createQueryBuilder('c')
              ->select('DISTINCT c.Gordailua, c')
              ->where('c.MarkIdGordailua = :MarkId')
              ->setParameter('MarkId', $MarkId);
          $Emaitza = $qb->getQuery()->getResult();
          return $Emaitza;
    }       

我想知道在 $Emaitza 中得到的结果如何。会不会是这样的:

$Emaitza[0]['Gordailua'] = 选择的第一个 Gordailua 值。

然后 $Emaitza[0][?????] = 第一个 c 类型对象。

我有点困惑。谢谢。

4

2 回答 2

10

不记得我是如何来到这篇文章的,但我什至读过它并想,好吧..无论如何..

我认为他要求获得第一个结果,如果是这样..查询应该首先知道结果的最大大小是多少

$qb->setMaxResults(1)

然后你可以调用一个真正定义自己的方法

$single_result = $qb->getSingleResult()

所以在给出的例子中,代码看起来像

$qb->getQuery()->setMaxResults(1)->getSingleResult();
于 2014-10-22T19:32:06.357 回答
-1

首先,您需要指定 From 子句:

$qb->from('YourBundle\Entity\ParentOfGordailua as pg');

您可以使用: getArrayResult() 将数据作为数组获取,如果您想从 Object ArrayCollection 中获取第一个对象(当您使用 getResult() 时,您必须:

$Gordailua = $Emaitza->first()->getGordailua();

查看参考资料和示例:http: //docs.doctrine-project.org/projects/doctrine-orm/en/2.0.x/reference/dql-doctrine-query-language.html

于 2012-05-20T10:17:45.577 回答