Ik stel voor dat je niet genoeg gegevens in je tabel hebt opgeslagen.
Zoals het nu is, moet u altijd naar elke vorige betaling kijken om vast te stellen of de huidige actief is of wacht op activering, een grote prestatiehit en een complexere vraag.
Een berekende expires_at
kolom voor payments
, die wordt uitgewerkt bij de toevoeging van een nieuwe betaling als MAX(payments.expires_at) + INTERVAL service_plans.days DAYS
stelt u in staat om het aantal resterende dagen te berekenen door slechts naar één rij te kijken... en of een gebruiker al dan niet een abonnement heeft.