Php 函数的返回重复相同的记录
我将从前端将此JSON发送到后端: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
{
"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
)。ID33
中的数组data
看起来不错,应该是这样的。但是ID88
中的数组数据
看起来乱七八糟。它应该是这样的:
"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')代码>但它给了我一个错误。