0

通过阅读文档和另一个 stackoverflow 帖子,我认为如果我只想返回几列数据,则学说中的正确方法是使用部分。(这是一个只读查询)。

但是,下面的代码返回所有 100 列,而不是我确定的 3 列。有人可以解释为什么吗?

谢谢,马尼沙

public function showAction(Request $request)
{
    if ($request->getMethod() == 'GET') {
        $id = $request->get('locationid');
        $kfType = $request->get('type');
        $em = $this->getDoctrine()
                    ->getManager();

        $data = $em->createQueryBuilder()
                    ->select ( array( 'partial d.{id, locationid, kfFyp}' ))
                    ->from('DashDataBundle:Data',  'd')
                    ->where('d.locationid = :locationid')
                    ->setParameter('locationid', $id)
                    ->setMaxResults(100)
                    ->getQuery()
                    ->getResult();
    }
4

1 回答 1

0

此查询将返回具有许多字段的学说实体。但是然后您使用partial关键字,此字段将为空。只有指定的字段会填充数据。

如果您不想水合对象,则可以通过指定简单数组获取数据

->getResult(\Doctrine\ORM\Query::HYDRATE_ARRAY)
于 2013-08-02T05:12:28.120 回答