从数据库到数组获取多个字段

时间:2018-12-25 14:50:54

标签: php mysql arrays

我在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中提取数据的方法...

1 个答案:

答案 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"];
}

希望有帮助!