我目前正在重构一个用Symfony 3编写的应用程序,并且在很大程度上依赖Doctrine ORM,而我在尝试获取包含所选列的索引的对象/数组时遇到了麻烦。
现在我对PHP相当熟悉了,我记得有一个基本的获取查询结果的过程,如下所示
$sth->fetchAll();(取决于我的查询)它将给我一个类似于下面的数组
[0] => Array
(
[name] => pear
[0] => pear
[colour] => green
[1] => green
)
[1] => Array
(
[name] => watermelon
[0] => watermelon
[colour] => pink
[1] => pink
)在Doctrine中,我尝试使用几个带有Hydration参数的内置函数
$query->getResult(); 不幸的是,我最终得到了这样的东西
Array
(
[0] => Array
(
[name] => pear
[colour] => green
)
[1] => Array
(
[name] => Watermelon
[colour] => Pink
)
)有没有人可以帮助我或者给我指出正确的方向,如何正确地解决这个问题?
-更新了问题,以包括我目前使用的完整方法
public function getDepartmentCount()
{
$qb = $this->createQueryBuilder('fruit')
->leftJoin('fruit.color','color')
$query=$qb->getQuery();
return $query->getArrayResult(); //Method that possibly needs to be changed
}发布于 2016-09-25 16:47:26
在创建了一个自定义的Hydrator之后,我已经能够自己解决这个问题。
我会将解决方案保存在这里,以供可能面临类似问题的任何人使用。
下面是自定义Hydrator的类
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及其名称
hydrators:
GridDataHydrator: AppBundle\Doctrine\CustomHydrator并最终使用此方法执行查询
$query->getResult('GridDataHydrator');https://stackoverflow.com/questions/39684420
复制相似问题