ChartJS Interval 7 Hari - JSON
Raw db Laravel 8.unknown
php_laravel_blade
2 years ago
3.5 kB
4
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...