đŸ§© 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.

Galerie