Php 函数的返回重复相同的记录

Php 函数的返回重复相同的记录,php,symfony,symfony4,Php,Symfony,Symfony4,我将从前端将此JSON发送到后端: { "tech": ["html"], "city": "zurich" } 这是我从数据库中动态获取数据的方式: public function user($uid, $selection, $tables) { // 1. Query builder $queryBuilder = $this->createQueryBuilder('u')->select($selection)->where('u.u

我将从前端将此JSON发送到后端:

{
    "tech": ["html"],
    "city": "zurich"
}
这是我从数据库中动态获取数据的方式:

public function user($uid, $selection, $tables) {
    // 1. Query builder
    $queryBuilder = $this->createQueryBuilder('u')->select($selection)->where('u.uid = :uid');

    // 2. Get each table
    foreach ($tables as $key => $value) {
        $queryBuilder = $queryBuilder->innerJoin('App\Entity\\' . $value, $key)->andWhere("$key.uid = :uid");
    }

    // 3. Finish and return the query
    return $queryBuilder
        ->setParameter('uid', $uid)
        ->getQuery()
        ->getResult()
    ;
}
如果我将此方法的返回转换为JSON,结果如下:

{
    "88": {
        "data": [
            {
                "tech": "PHP",
                "city": "Zurich"
            },
            {
                "tech": "JavaScript",
                "city": "Zurich"
            },
            {
                "tech": "HTML",
                "city": "Zurich"
            }
        ],
        "rank": 200
    },
    "33": {
        "data": [
            {
                "tech": "HTML",
                "city": "zurich"
            }
        ],
        "rank": 200
    }
}
所以我们有两个用户的信息(
88
33
)。ID
33
中的数组
data
看起来不错,应该是这样的。但是ID
88
中的数组
数据
看起来乱七八糟。它应该是这样的:

  "data": [
            {
                "tech": ["PHP", "JavaScript", "HTML"],
                "city": "Zurich"
            }
        ]

我如何才能做到这一点?

您应该按城市使用聚合函数组,如下所示:

从tbl1中选择城市组(技术)

按城市分组
读取聚合。我尝试过这个方法,但我的数据数组如下所示:
“数据”:[{“技术”:“PHP”,“城市”:“苏黎世”}]
。正如您所看到的
tech
包含一个字符串,但它应该包含一个数组。我将在表中构建此数据,并尝试向您显示正确的sql:)谢谢您的回答。但我怎么能用Symfony做到这一点?我用
$queryBuilder=$this->createQueryBuilder('u')->select('selection)->where('u.uid=:uid')->addSelect('GROUP_CONCAT(tech))->groupBy('u.city')但它给了我一个错误。