mengelola kuota harian yang bisa berkurang, bertambah, dan reset setiap hari
Ryan Pazrin

Ryan Pazrin @ryfazrin

About: Frontend Engineer. LinkedIn: https://www.linkedin.com/in/muhammad-pazrin-andreanor-950824159/.

Location:
Yogyakarta
Joined:
Sep 30, 2021

mengelola kuota harian yang bisa berkurang, bertambah, dan reset setiap hari

Publish Date: May 13
1 0

Untuk mengelola kuota harian yang bisa berkurang, bertambah, dan reset setiap hari, kamu bisa menggunakan gabungan fitur dari MySQL dan Laravel untuk hasil yang optimal dan fleksibel.

Berikut adalah pendekatan terbaik:


🔧 Struktur Tabel (Contoh di MySQL)

Misalnya kamu punya tabel kuota_harian:

CREATE TABLE kuota_harian (
    id INT AUTO_INCREMENT PRIMARY KEY,
    tanggal DATE NOT NULL,
    kuota INT NOT NULL DEFAULT 0,
    kuota_terpakai INT NOT NULL DEFAULT 0
);
Enter fullscreen mode Exit fullscreen mode

🎯 Fitur yang Diperlukan

1. Reset Otomatis Tiap Hari

Ada 2 pendekatan:

(Disarankan) Gunakan Laravel + Scheduler

Buat job/artisan command yang dijalankan setiap hari lewat Laravel Scheduler.

Langkah-langkah:

  • Tambahkan php artisan make:command ResetKuotaHarian
  • Di dalamnya, insert data baru untuk hari ini, atau reset kuota jika sudah ada.
  • Jalankan lewat scheduler (app/Console/Kernel.php):
protected function schedule(Schedule $schedule)
{
    $schedule->command('kuota:reset')->daily();
}
Enter fullscreen mode Exit fullscreen mode

🔁 Alternatif: Gunakan Event di MySQL

Bisa juga buat event MySQL:

CREATE EVENT reset_kuota_harian
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_DATE + INTERVAL 1 DAY
DO
  INSERT INTO kuota_harian (tanggal, kuota, kuota_terpakai)
  VALUES (CURDATE(), 10, 0);
Enter fullscreen mode Exit fullscreen mode

Namun, MySQL Events kurang fleksibel dan perlu aktifkan event_scheduler.


2. Mengurangi/Menambah Kuota

Gunakan query di Laravel saat user booking atau cancel:

// Kurangi kuota
DB::table('kuota_harian')
    ->where('tanggal', today())
    ->increment('kuota_terpakai');

// Tambah kuota (misal user batal)
DB::table('kuota_harian')
    ->where('tanggal', today())
    ->decrement('kuota_terpakai');
Enter fullscreen mode Exit fullscreen mode

Atau validasi dulu:

$kuota = DB::table('kuota_harian')->where('tanggal', today())->first();
if ($kuota->kuota_terpakai < $kuota->kuota) {
    // lanjutkan booking
}
Enter fullscreen mode Exit fullscreen mode

🔄 Ringkasan

Fitur Laravel MySQL
Reset Harian ✅ Lebih fleksibel ❌ Kurang fleksibel
Modifikasi Kuota ✅ Sangat cocok ❌ Sulit dan kaku

📌 Rekomendasi

  • Gunakan Laravel Scheduler untuk reset harian.
  • Gunakan query Laravel untuk manipulasi kuota.
  • Gunakan tabel kuota_harian per tanggal agar fleksibel.

Comments 0 total

    Add comment