Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于日期groupBy类型的查询计数-Laravel_Php_Laravel_Laravel 5_Laravel 7 - Fatal编程技术网

Php 基于日期groupBy类型的查询计数-Laravel

Php 基于日期groupBy类型的查询计数-Laravel,php,laravel,laravel-5,laravel-7,Php,Laravel,Laravel 5,Laravel 7,我的目标是构建这些数据 753 它现在可以工作了,但是它做了很多查询来得到我需要的东西 我试过了 我现在有点困了 如何优化查询?您可以在PHP端进行分组: $logs = BabyLog->where('babyId',$baby->id)->get()->groupBy(function ($log) { return $log->updated_at->format('y-m-d'); }); foreach($logs as $date =&

我的目标是构建这些数据

753 它现在可以工作了,但是它做了很多查询来得到我需要的东西

我试过了 我现在有点困了


如何优化查询?

您可以在PHP端进行分组:

$logs = BabyLog->where('babyId',$baby->id)->get()->groupBy(function ($log) {
   return $log->updated_at->format('y-m-d');
});

foreach($logs as $date => $logsOnThatDay) {
   // here on you can probably use the code you already have but this below might be shorter
   $graphData[$date] = $logsOnThatDay->reduce(function ($acc, $log) {
      if (array_key_exists($log->type, $acc)) { $acc[$log->type]++; }
       return $acc;
   }, [
      'pee' => 0,
      'poop' => 0,
      'feed' => 0,
      'medicine' => 0,
      'sleep' => 0,

   ]);
   
}


在不需要的时候,您仍然在循环中运行查询。将所有这些添加到第一个查询中,并将其从循环中删除。但是,如果我将其拉出,我将如何访问所有日期
$logDate
如果您想建议您的查询,我将立即尝试。让我试试。。结果:我在null上得到了对成员函数format()的
调用
我有一个输入错误,意思是说
更新了
不是我写的乱七八糟的东西也忘了添加更新到现在的提要
$logs = BabyLog::whereDate('updated_at', '=', date('Y-m-d H:i:s'))
->whereIn('type', ['feed', 'pee', 'poop','medicine','sleep'])
->selectRaw('type, count(type) as count')
->groupBy('type')
->get()
->keyBy('type');
$logs = BabyLog->where('babyId',$baby->id)->get()->groupBy(function ($log) {
   return $log->updated_at->format('y-m-d');
});

foreach($logs as $date => $logsOnThatDay) {
   // here on you can probably use the code you already have but this below might be shorter
   $graphData[$date] = $logsOnThatDay->reduce(function ($acc, $log) {
      if (array_key_exists($log->type, $acc)) { $acc[$log->type]++; }
       return $acc;
   }, [
      'pee' => 0,
      'poop' => 0,
      'feed' => 0,
      'medicine' => 0,
      'sleep' => 0,

   ]);
   
}