sql >> Databáze >  >> RDS >> Mysql

Laravel - doplňte chybějící data a počty z databáze

Toto řešení se mi osvědčilo, nejprve jsem vytvořil pole se všemi daty v časovém rozsahu, s daty nastavenými jako klíče a hodnotami počtu nastavenými na 0, a poté jsem hodnoty po dotazu v DB nahradil ve stejném poli počtem hodnoty z dotazu:

$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. Najděte datum/čas vytvoření sloupce tabulky

  2. Získejte další objednávku po limitu

  3. Seskupit řádky na základě hodnoty součtu sloupců

  4. Dávkové vložení s tabulkou, která má mnoho sloupců pomocí Anormu