𧩠Migration automatique de la base de données
Créé par Jean-Emmanuel Bissey le 13/11/2025 PubliéSaviez-vous que MyClub met à jour automatiquement sa base de données lorsque le modÚle évolue ?
Eh oui ! Sous le capot, notre application vérifie à chaque démarrage que la version du modÚle de données correspond bien à celle utilisée dans le programme.
đ Comment ça marche ?
Dans la table Metadata, un champ DatabaseVersion garde la trace de la version actuelle du schéma de la base.
De son cĂŽtĂ©, la classe Database de lâapplication mĂ©morise dans une constante DB_VERSION le numĂ©ro attendu.
Lors de lâinitialisation, la classe Database compare les deux valeurs :
- â si elles correspondent, tout va bien ;
- â ïž si la base est plus ancienne, MyClub lance une migration automatique pour lâamener Ă jour ;
- đ« si la base est plus rĂ©cente que le code, une alerte empĂȘche le dĂ©marrage (pour Ă©viter toute incohĂ©rence).
đ§ Les scripts de migration
Chaque Ă©volution du modĂšle (ajout de table, colonne, index, etc.) doit ĂȘtre accompagnĂ©e dâun petit script de migration.
Ces scripts se trouvent dans app/models/database/migrators/ et portent des noms comme :
V1ToV2Migrator.php V2ToV3Migrator.php
Chaque script implĂ©mente lâinterface :
interface DatabaseMigratorInterface {
public function upgrade(PDO $pdo, int $currentVersion): int;
}
Cette fonction applique les changements nĂ©cessaires pour passer dâune version Ă la suivante â par exemple ajouter une colonne, crĂ©er une table, ou mettre Ă jour des mĂ©tadonnĂ©es.
đȘ Et le reste se fait tout seul !
Lorsquâune nouvelle version de lâapplication est installĂ©e, la classe Database dĂ©tecte automatiquement la diffĂ©rence et appelle les migrateurs successifs (V1ToV2, V2ToV3, etc.) jusquâĂ atteindre la version cible.
Ainsi, les utilisateurs nâont rien Ă faire : leurs donnĂ©es sont prĂ©servĂ©es et le schĂ©ma reste toujours compatible.
Souple, robuste et Ă©volutif â câest ça lâesprit MyClub ! đȘ
GrĂące Ă cette architecture, lâapplication peut continuer Ă grandir sans jamais perdre ses donnĂ©es.