我在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字段。
其中一个错误是对数组上的成员函数的调用,等等,我无法找到从数据库中提取数据的方法。。。

最佳答案

我在你的代码中看不到$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]中的数据,因此只有trytotalCollected作为最后一个要设置的数据存在。
为了解决这个问题,您可以使用:
foreach ($myResults as $myResult => $label) {
    $result['data'][$schoolResult]["id] =  $label["id"];
    $result['data'][$schoolResult]["name"] =  $label["name"];
    $result['data'][$schoolResult]["totalCollected"] =  $label["totalCollected"];
}

希望能有帮助!

关于php - 从数据库到数组获取多个字段,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53923375/

10-11 23:11
查看更多