首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >原理仅检索所选列的索引

原理仅检索所选列的索引
EN

Stack Overflow用户
提问于 2016-09-25 15:25:55
回答 1查看 180关注 0票数 0

我目前正在重构一个用Symfony 3编写的应用程序,并且在很大程度上依赖Doctrine ORM,而我在尝试获取包含所选列的索引的对象/数组时遇到了麻烦。

现在我对PHP相当熟悉了,我记得有一个基本的获取查询结果的过程,如下所示

代码语言:javascript
运行
复制
$sth->fetchAll();

(取决于我的查询)它将给我一个类似于下面的数组

代码语言:javascript
运行
复制
  [0] => Array
    (
        [name] => pear
        [0] => pear
        [colour] => green
        [1] => green
    )

[1] => Array
    (
        [name] => watermelon
        [0] => watermelon
        [colour] => pink
        [1] => pink
    )

在Doctrine中,我尝试使用几个带有Hydration参数的内置函数

代码语言:javascript
运行
复制
$query->getResult(); 

不幸的是,我最终得到了这样的东西

代码语言:javascript
运行
复制
Array
(
  [0] => Array
    (
        [name] => pear
        [colour] => green
    )

 [1] => Array
    (
        [name] => Watermelon
        [colour] => Pink
    )
)

有没有人可以帮助我或者给我指出正确的方向,如何正确地解决这个问题?

-更新了问题,以包括我目前使用的完整方法

代码语言:javascript
运行
复制
public function getDepartmentCount()
{
    $qb = $this->createQueryBuilder('fruit')
        ->leftJoin('fruit.color','color')
    $query=$qb->getQuery();
    return $query->getArrayResult(); //Method that possibly needs to be changed
}
EN

回答 1

Stack Overflow用户

发布于 2016-09-25 16:47:26

在创建了一个自定义的Hydrator之后,我已经能够自己解决这个问题。

我会将解决方案保存在这里,以供可能面临类似问题的任何人使用。

下面是自定义Hydrator的类

代码语言:javascript
运行
复制
namespace AppBundle\Doctrine;
use Doctrine\ORM\Internal\Hydration\AbstractHydrator;
use PDO;

class CustomHydrator extends AbstractHydrator
{
    /**
    * Hydrates all rows from the current statement instance at once.
    *
    * @return array
    */
    protected function hydrateAllData()
    {
        // TODO: Implement hydrateAllData() method.
        return $this->_stmt->fetchAll(PDO::FETCH_NUM);
    }
}

在我的配置文件中的orm部分添加了这个,以告诉Symfony在哪里可以找到Custom Hydrator及其名称

代码语言:javascript
运行
复制
hydrators:
          GridDataHydrator: AppBundle\Doctrine\CustomHydrator

并最终使用此方法执行查询

代码语言:javascript
运行
复制
$query->getResult('GridDataHydrator');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39684420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档