如何在包含具有 Eloquent 的对象数组的 json 字段中求和
Posted
技术标签:
【中文标题】如何在包含具有 Eloquent 的对象数组的 json 字段中求和【英文标题】:How to sum in a json field that contains an array of objects with Eloquent 【发布时间】:2020-05-08 16:02:08 【问题描述】:[
"id":4,"sum":19,
"id":3,"sum":9,
"id":6,"sum":32,
"id":2,"sum":32
]
我正在尝试这个,但它只能找到 1 个值,如何通过“总和”值的总和找到?
$query->whereJsonContains('programs', [['sum' => intval($search)]]);
【问题讨论】:
你的查询有一个 where 子句,所以它会找到你定义的整数所在的行,并且只有那个值。 你能解释一下你想要达到的目标吗? 【参考方案1】:现在 eloquent 支持此功能。 这在使用 mysql 5.7 的 Laravel 8 上对我有用:
Entity::sum('json_column->field')
【讨论】:
【参考方案2】:你可以使用
//...
->whereRaw(
'JSON_CONTAINS(programs->"$[*].sum", "' . intval($search) . '")')->get();
See related
【讨论】:
以上是关于如何在包含具有 Eloquent 的对象数组的 json 字段中求和的主要内容,如果未能解决你的问题,请参考以下文章