Le registre grossit. Des réservations honorées ou annulées depuis des mois s'y entassent, et la page du registre ralentit. Gorm veut une commande de grand ménage, à lancer une fois par mois (et un jour, par une tâche planifiée).
Une commande qui supprime des données en masse mérite des précautions : on veut pouvoir regarder avant de supprimer, suivre son avancement, et être sûr qu'elle tient avec des milliers de réservations.
Les tâches longues
--dry-run: l'usage est d'offrir un mode « à blanc », qui montre ce qui serait fait sans rien faire.- La barre de progression :
$io->progressIterate()enveloppe une boucle et affiche l'avancement. - Les lots : Doctrine garde en mémoire chaque entité qu'il charge. Avec
toIterable(), les entités arrivent une à une ; tous les N, on écrit (flush()) puis on vide la mémoire (clear()). - La verbosité :
-v,-vv,-vvvdemandent plus de détails ;$io->isVerbose()permet de n'en donner que sur demande.
Votre mission
Écrivez app:registre:purger :
- elle supprime les réservations terminées (
honoreeouannulee) dont le jour est antérieur à la limite : par défaut, il y a 30 jours. Les autres ne bougent pas. Résumé : « 2 réservations purgées. » ; --dry-runne supprime rien et annonce « 2 réservations seraient purgées. » ;--avantchoisit la limite :--avant 2026-08-01, ou relative comme--avant "last month". Une date illisible donneCommand::INVALIDet « Date invalide » ;- elle traite les réservations par lots, avec une barre de progression, jusqu'à la dernière ;
- avec
-v, elle liste chaque réservation purgée : « Boromir, le 02/07/2026 (honoree) ».
Dans la Console : app:registre:purger --dry-run --avant today -v, puis sans --dry-run.