【问题标题】:How to sum in a json field that contains an array of objects with Eloquent如何在包含具有 Eloquent 的对象数组的 json 字段中求和
【发布时间】: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 子句,所以它会找到你定义的整数所在的行,并且只有那个值。
  • 你能解释一下你想要达到的目标吗?

标签: laravel postgresql


【解决方案1】:

现在 eloquent 支持此功能。 这在使用 MySQL 5.7 的 Laravel 8 上对我有用:

Entity::sum('json_column->field')

【讨论】:

    【解决方案2】:

    你可以使用

    //...
    ->whereRaw(
    'JSON_CONTAINS(programs->"$[*].sum", "' . intval($search) . '")')->get();
    

    See related

    【讨论】:

      猜你喜欢
      • 2019-10-04
      • 2020-12-16
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多