gpt4 book ai didi

symfony - 如何从 ResultSetMapping 获取关联数组?

转载 作者:行者123 更新时间:2023-12-01 04:37:31 26 4
gpt4 key购买 nike

我正在开发一个 Symfony2 项目 (Doctrine),我想从 ResultSetMapping 对象中获取一个简单的关联数组。

这是我的要求:

$rsm = new ResultSetMapping;

//$rsm->addIndexByScalar('name');
$rsm->addScalarResult('name', 'name');
$rsm->addScalarResult('rate', 'rate');

return $this->_em->createNativeQuery(sprintf('
SELECT DISTINCT t1.sold_drug as name, (COUNT(*)/(SELECT COUNT(*) FROM Transaction t WHERE t.sold_drug != ""))*100 as rate
FROM Transaction t1

WHERE t1.sold_drug != "" AND t1.prescribed_but_not_sold != "No"
GROUP BY name
ORDER BY rate DESC', $this->getFilterQuery()), $rsm)->getResult();

所以我想得到一个关联数组,例如:

array('nameA' => 10, 'nameB' => 2, ...);

我尝试添加 ScalarResult/ScalarIndex 但没有成功!

有什么想法吗?谢谢!

最佳答案

您的问题包含不必要的复杂查询,引起了您问题的注意。但这是您基本需要的:

    $rsm = new ResultSetMapping();
$query = $this->_em->createNativeQuery('SELECT unique_name, price FROM drugs', $rsm);
$rsm->addIndexByScalar('unique_name');
$rsm->addScalarResult('price', 'price');
//more scalars can follow
var_dump($query->getResult());

在这种情况下你会得到这样的东西:

array (size=4)
'NameA' =>
array (size=1)
'price' => int 10
'NameB' =>
array (size=1)
'price' => int 20
'NameC' =>
array (size=1)
'price' => int 30
'NameD' =>
array (size=1)
'price' => int 40

请让我知道这是否是您所需要的。如果是,请接受我的回答。

附言请注意,如果 unique_name 不是真正唯一的,您将丢失一些具有重复索引的结果。

关于symfony - 如何从 ResultSetMapping 获取关联数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16941514/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com