我目前正在重构一个用Symfony 3编写的应用程序,并且严重依赖ORM,我一直在尝试获取一个包含所选列索引的对象/数组。
现在我对PHP PDO相当熟悉,我记得查询结果的基本获取如下所示
$sth->fetchAll();
(根据我的查询)它会给我一个类似于下面的数组
[0] => Array
(
[name] => pear
[0] => pear
[colour] => green
[1] => green
)
[1] => Array
(
[name] => watermelon
[0] => watermelon
[colour] => pink
[1] => pink
)
在理论方面,我尝试使用几个具有水合参数的内置函数
$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
}
我已经能够解决这个问题后,我自己创建了一个自定义水合器。
我将为可能面临类似问题的任何人保留解决方案。
下面是自定义水合器的类
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在哪里可以找到定制的水合器及其名称
hydrators:
GridDataHydrator: AppBundle\Doctrine\CustomHydrator
并最终使用此方法执行查询
$query->getResult('GridDataHydrator');
问题内容: 使用JDBC时,我经常遇到类似 我问自己(也包括代码作者)为什么不使用标签来检索列值: 我听到的最好的解释是关于性能的。但是实际上,这使处理速度非常快吗?我不相信,尽管我从未进行过测量。我认为,即使按标签检索会稍慢一些,但它仍具有更好的可读性和灵活性。 因此,有人可以给我很好的解释,避免使用列索引而不是列标签来检索列值吗?两种方法的优缺点(也许涉及某些DBMS)是什么? 问题答案: 默
问题内容: 我正在尝试仅使用来自多索引DataFrame的一个索引来创建新的DataFrame。 理想情况下,我想要这样的事情: 和: 本质上,我想删除除level之外的多索引的所有其他索引。是否有捷径可寻? 问题答案: 一种方法是简单地重新绑定到所需的MultiIndex级别。您可以通过指定要保留的标签名称来做到这一点: 或使用级别的整数值: MultiIndex的所有其他级别将在此处消失。
是否有一种方法可以使我在从索引中检索时,只获得文档的_source中的数据&而不是任何其他元数据,如_index、_type、_id和_score?
有什么快速的方法可以过滤列表并获得值的索引吗? 我想拿到我找到的东西的索引?
我很难选择一个NumPy矩阵的每行的特定列。 假设我有以下矩阵,我称之为: 我还有一个每行列索引的,我称之为: 我需要获得值: 我还可以生成一个与形状相同的矩阵,而不是带有索引的,其中每一列都是一个/范围为0-1的值,指示这是否是必需的列。 我知道这可以通过迭代数组并选择我需要的列值来完成。然而,这将经常在大的数据数组上执行,这就是为什么它必须尽可能快地运行。 因此,我想知道是否有更好的解决办法?
问题内容: 我正在负载下测试数据库设计,我只需要检索固定数量的行(5000) 我可以指定一个LIMIT来实现这一点,但是查询似乎会构建所有匹配行的结果集,然后仅返回该限制中指定的行数。那是怎么实现的? MySQL是否有读取一行,读取另一行并在检索到第5000个匹配行时基本停止的功能? 问题答案: MySQL很聪明,如果您在查询中指定a ,并且有可能在不先生成整个结果集的情况下生成该结果,则它将不会