ChartJS Interval 7 Hari - JSON
Raw db Laravel 8.unknown
php_laravel_blade
2 years ago
3.5 kB
3
Indexable
<?php namespace App\Models\API; //use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Facades\DB; class ChartJS extends Model { //use HasFactory; public function grafik_mingguan() { // Proses 1 $subquery1 = DB::table(DB::raw('(SELECT "Monday" AS Hari UNION ALL SELECT "Tuesday" UNION ALL SELECT "Wednesday" UNION ALL SELECT "Thursday" UNION ALL SELECT "Friday" UNION ALL SELECT "Saturday" UNION ALL SELECT "Sunday") AS Waktu')) ->select('Hari'); // Proses 2 $subquery2 = DB::table($subquery1, 'Waktu') ->leftJoinSub(function ($query) { // Proses 3 $query->select(DB::raw('DAYNAME(wakturegistrasi) AS DAY, COUNT(*) AS Terdaftar')) ->from('registrations') ->where('wakturegistrasi', '>=', DB::raw('DATE(NOW()) - INTERVAL 7 DAY')) ->where('aktivasi', 'sudah') ->groupBy('DAY'); }, 'Waktu1', 'Waktu.Hari', '=', 'Waktu1.DAY') ->select('Waktu.Hari', DB::raw('COALESCE(Waktu1.Terdaftar, 0) AS Terdaftar')); // Eksekusi query $data = $subquery2->get(); foreach ($data as $result) { $day = $result->Hari; $total = $result->Terdaftar; switch ($day) { case "Monday": # code... $tsenin = array($total); break; case "Tuesday": # code... $tselasa = array($total); break; case "Wednesday": # code... $trabu = array($total); break; case "Thursday": # code... $tkamis = array($total); break; case "Friday": # code... $tjumat = array($total); break; case "Saturday": # code... $tsabtu = array($total); break; case "Sunday": # code... $tminggu = array($total); break; default: # code... break; } } $hasil_terdaftar = array_merge($tsenin, $tselasa, $trabu, $tkamis, $tjumat, $tsabtu, $tminggu); $count = DB::table('registrations') ->where('wakturegistrasi', '>=', DB::raw('DATE(NOW()) - INTERVAL 7 DAY')) ->where('aktivasi', 'sudah') ->selectRaw('COUNT(*) AS Terdaftar') ->pluck('Terdaftar'); $terdaftar = array($count); $hasil = array('data[0]' => preg_replace('/"([a-zA-Z]+[a-zA-Z0-9_]*)":/', '$1:', $hasil_terdaftar), 'data[1]' => preg_replace('/"([a-zA-Z]+[a-zA-Z0-9_]*)":/', '$1:', $terdaftar)); return json_encode($hasil); } }
Editor is loading...