【问题标题】:Laravel collection formatting key to fieldLaravel 集合格式化键字段
【发布时间】:2020-11-21 04:29:50
【问题描述】:

我有一个具有这种格式的 laravel 集合:

{
  "24385528032901": [
    {
      "time": "2020-06-30T22:30:00.000000Z",
      "conso_prod": "Prod",
      "meter_id": "24385528032901",
      "delta": "0",
    },
    {
      "time": "2020-06-30T23:00:00.000000Z",
      "conso_prod": "Prod",
      "meter_id": "24385528032901",
      "delta": "2",
    }
  ], 
  "24385528032777": [
    {
      "time": "2020-06-30T22:30:00.000000Z",
      "conso_prod": "Prod",
      "meter_id": "24385528032777",
      "delta": "0",
    },
    {
      "time": "2020-06-30T23:00:00.000000Z",
      "conso_prod": "Prod",
      "meter_id": "24385528032777",
      "delta": "5",
    }
  ], etc.
}

我很难将其转换为 chartJS 折线图格式:

[
    [
        'label' => '24385528032901',
        'data' => $measures->map->delta,
    ], [
        'label' => '24385528032777',
        'data' => $measures->map->delta,
    ],
]

我知道有一种收集方法可以做到这一点,但找不到了。有人吗?

【问题讨论】:

  • 这是什么$measures->map->delta?这是您拥有的其他变量还是其他变量?
  • map->delta 是仅返回 delta 字段的 map 函数的快捷方式
  • 对集合进行迭代,获取数据创建一个数组,然后将其推送到另一个父数组怎么样?
  • 我不喜欢使用循环。有一种更优雅的方式来做到这一点

标签: php laravel collections laravel-collection


【解决方案1】:

如果我的问题是正确的,并且您想将 meter_iddelta 作为 labeldata 您可以仅从您的集合中获取 meter_iddelta 字段,然后使用集合的地图助手像这样将这些字段映射到您的新字段名称

Model::get(['meter_id', 'delta'])->map(function (Model $model) {
   return [
       'label' => $model->meter_id,
       'data' => $model->delta,
   ];
})->toArray()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 2016-01-22
    • 1970-01-01
    • 2019-03-08
    • 1970-01-01
    相关资源
    最近更新 更多