【问题标题】:group records by day (eloquent) laravel按天分组记录(雄辩的)laravel
【发布时间】:2021-01-15 18:13:25
【问题描述】:

你好我的朋友我有一个问题。我正在查询并希望按天获取记录组。现在我已经完成了这段代码

$pedidosChart =  DB::table('pedidos')
            ->selectRaw(' count(*) as count ,  DATE_FORMAT(fecha_creado, \'%d\') as day , sum( pedidos.precio_total) as  amount ')
            ->whereMonth('fecha_creado', 12)
            ->groupBy('day')
            ->get() 

我知道了:

  0 => {#1388 ▼
      +"count": 4
      +"day": "15"
      +"amount": 6073.5798950195
    }
    1 => {#1387 ▼
      +"count": 8
      +"day": "17"
      +"amount": 22565.599243164
    }
    2 => {#1389 ▼
      +"count": 11
      +"day": "18"
      +"amount": 13111.219726562
    }

我想得到:

[▼
  15 => array:2 [▼
    "count" => 4
    "amount" => 6073.5798950195
  ]
  17 => array:2 [▼
    "count" => 8
    "amount" => 22565.599243164
  ]
  18 => array:2 [▼
    "count" => 11
    "amount" => 13111.219726562
  ]
  21 => array:2 [▼
    "count" => 4
    "amount" => 2910.5600585938
  ]

我得到了上述结果,因为使用 foreach(循环)对数据进行排序有可能吗?怎么样?

【问题讨论】:

  • 不完整的细节关键 15,17,18 他们来自哪里?
  • 它们是创建记录时每条记录的天数->检查选择
  • 15、17、18、21 是必需的结果吗?
  • 仅供参考:您在这里没有使用 Eloquent,仅使用查询构建器。尝试将其作为纯 SQL 运行 - 您可能会得到更清晰的消息。顺便说一句,所有非聚合列都应该在 group by ...

标签: php mysql laravel eloquent


【解决方案1】:

如果您不想从实际数组中删除day 键,这是一个快速解决方案。

你可以使用 laravel 收集方法groupBy.

$grouped = $pedidosChart->groupBy('day');

其他解决方案是使用 foreach 循环并将 key 设置为 day 的值,然后取消设置。

$grouped = [];
foreach($pedidosChart as $key => $obj) {
    $grouped[$obj->day] = $obj;
    unset($grouped[$obj->day]['day']);  
}

【讨论】:

  • 我过去曾做过该解决方案,但结果很少见,因为它将是另一个数组中的一个数组,这是结果:``` 15 => \Support\Collection {#1384 ▼ #项目:数组:1 [▼ 0 => {#1388 ▼ +“计数”:4 +“天”:“15”+“数量”:6073.5798950195 }] }
  • 是的,当是数组格式时它看起来更好,但我不知道你是否可以查看此屏幕截图imgur.com/a/ffYEdWY 你可以看到得到的格式:[day => [ index =>{values }] 相反,我希望它是 [day => {value }] 我不知道你是否理解我的意思,换句话说,我想用日期值替换数组索引
  • 你使用的是哪个 laravel 版本?
  • 我使用的是 laravel 8 版
猜你喜欢
  • 1970-01-01
  • 2020-05-30
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 2021-05-07
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多