我在Symfony
项目中编写了一个api调用,该调用返回了实体的所有字段以及下面定义的查询。
现在,我只需要定义三个字段,例如'id','name','value',并从当前存储在数据库中的字段中提取值即可。
public function getChartData() {
$myResults = $this->getMyRepository()
->createQueryBuilder('s')
->groupBy('s.totalCollected')
->orderBy('s.id', 'ASC')
->getQuery()
->getArrayResult();
$result = array("data" => array());
foreach ($myResults as $myResult => $label) {
$result['data'][$schoolResult] = $label["id"];
$result['data'][$schoolResult] = $label["name"];
$result['data'][$schoolResult] = $label["totalCollected"];
}
}
问题在于它仅返回totalCollected
字段。
错误之一是在数组上调用成员函数getId()
,依此类推,我想不出一种从db中提取数据的方法...
答案 0 :(得分:1)
我无法在您的代码中看到$schoolResult
的来源,但可以猜测它是某种字符串键。
请注意,您尝试在同一键上设置3个值,因此仅保留最后一个。
查看:
$a = array();
$a["key"] = 4;
$a["key"] = 6;
很容易看出$a["key"]
将包含6个而不是4个,或者两者都不包含。
当您这样做:
foreach ($myResults as $myResult => $label) {
$result['data'][$schoolResult] = $label["id"];
$result['data'][$schoolResult] = $label["name"];
$result['data'][$schoolResult] = $label["totalCollected"];
}
您覆盖$result['data'][$schoolResult]
中的数据,因此仅尝试将totalCollected
作为最后一个设置。
为了解决该问题,您可以使用:
foreach ($myResults as $myResult => $label) {
$result['data'][$schoolResult]["id] = $label["id"];
$result['data'][$schoolResult]["name"] = $label["name"];
$result['data'][$schoolResult]["totalCollected"] = $label["totalCollected"];
}
希望有帮助!