我有一个问题,一个查询求和存储在一个JSON数组中的值。我有一个与Valid实体连接的Sheet实体。Valid有一个字段“$valid”对应于JSON数组。下面是一个JSON可能看起来像什么的例子。
{
"bdc": {
"service": {
"operator": {
"entries": [
{
"priceDF": 100,
"priceWT": 150,
"firstNumber": 12,
"paymentDate": {
"date": "2023-08-07 00:00:00.000000",
"timezone": "Europe/Berlin",
"timezone_type": 3
},
"secondNumber": 23,
"paymentNumber": 1212,
"dateFirstNumber": {
"date": "2023-08-07 00:00:00.000000",
"timezone": "Europe/Berlin",
"timezone_type": 3
}
},
{
"priceDF": 100,
"priceWT": 250,
"firstNumber": 13,
"paymentDate": {
"date": "2023-08-07 00:00:00.000000",
"timezone": "Europe/Berlin",
"timezone_type": 3
},
"secondNumber": 24,
"paymentNumber": 1213,
"dateFirstNumber": {
"date": "2023-08-07 00:00:00.000000",
"timezone": "Europe/Berlin",
"timezone_type": 3
}
}
]
}
},
},
"step": "Paiement",
"type": "bdc",
"anticipated": false
}
实际上,我想对存储在“entries”数组(路径:sheet.valid.bdc.service.operator.entries)中的对象中的值“priceDF”求和。
我试着写了这个查询:
$qb = $this->createQueryBuilder('s');
$qb->select("SUM(CAST(JSON_EXTRACT(v.dac, '$.bdc.service.operator.entries[*].priceWT') AS DECIMAL(10,2)) ) as totalPriceWT")
->join('s.valid', 'v')
$query = $qb->getQuery();
$resultCP = $query->getResult();
但它总是返回0。我事实上我肯定写entries[*].priceWT不起作用,但我不知道怎么做。
有人知道如何在这种JSON中总结价值观吗?谢谢。
1条答案
按热度按时间erhoui1w1#
感谢@ wchiandom,查询工作完美。我添加了其他条件,以满足我的项目要求,这是最终的查询(PHP):