sql >> Database >  >> RDS >> Mysql

Laravel - vul ontbrekende datums en tellingen uit de database in

Deze oplossing werkte voor mij, ik heb eerst een array gemaakt met alle datums in het tijdbereik, met datums ingesteld als sleutels en telwaarden ingesteld op 0, en vervolgens de waarden vervangen na de query in DB, in dezelfde array met count waarden uit de zoekopdracht:

$period = new DatePeriod( new DateTime($from), new DateInterval('P1D'), new DateTime($to));
      $dbData = [];

      foreach($period as $date){
          $range[$date->format("Y-m-d")] = 0;
      }

      $data = DB::table($request['option'])
                ->select(DB::raw('DATE(created_at) as time'), DB::raw('count(*) as count'))
                ->whereDate('created_at', '>=', date($from).' 00:00:00')
                ->whereDate('created_at', '<=', date($to).' 00:00:00')
                ->groupBy('time')
                ->get();

      foreach($data as $val){
        $dbData[$val->time] = $val->count;
      }

      $data = array_replace($range, $dbData);
    }

    return json_encode($data);


  1. Postgres NIET in array

  2. Kan geen verbinding maken met de lokale MySQL-server in docker-compose

  3. hoe gegevens uit de Oracle-database op te halen met behulp van PHP

  4. Ik kan MySQL niet gebruiken vanwege een geweigerde verbinding