Skip to main content

Qu’est-ce qu’une migration

Une migration s’apparente à un système de contrôle de version pour la base de données. Elle permet à une équipe de partager et gérer le schéma de la base. Vous avez sans doute déjà connu la situation où, après un pull du code, il faut demander à ses collègues d’« ajouter manuellement une colonne à leur base locale ». Les migrations résolvent ce problème. Les fichiers de migration sont stockés dans database/migrations. Chaque nom de fichier contient un horodatage qui détermine l’ordre d’exécution.

Créer un fichier de migration

Utilisez la commande Artisan make:migration.
Laravel déduit le nom de la table à partir du nom de la migration et génère un stub adapté. create_posts_table produit un stub pour créer la table posts.

Structure d’une migration

Une classe de migration possède deux méthodes : up et down.
  • up : ajoute les tables, colonnes et index à la base.
  • down : annule les opérations de up. Appelée lors du rollback.

Méthodes de définition de colonne

Blueprint propose de nombreux types de colonnes.

Modificateurs de colonne

Utilisez les méthodes chaînées pour ajouter des modificateurs.

Exécuter les migrations

migrate exécute toutes les migrations en attente.
migrate:status liste les migrations exécutées et celles en attente.
En production, une invite de confirmation apparaît. Pour l’ignorer, utilisez --force, mais soyez prudent car certaines opérations peuvent effacer des données.

Rollback

migrate:rollback annule le dernier lot de migrations.
L’option --step limite le nombre de migrations à annuler.
migrate:refresh annule toutes les migrations puis les réexécute.
migrate:refresh recrée toutes les tables et supprime les données. Pratique pour réinitialiser la base en développement.

Exemple : création de la table posts

Voyons la création d’une table posts pour gérer des articles de blog.

1. Génération de la migration

2. Édition de la migration

Ouvrez database/migrations/xxxx_xx_xx_xxxxxx_create_posts_table.php.

3. Exécution

La table posts est créée.

4. Ajouter une colonne après coup

Pour ajouter une colonne à une table existante, créez une nouvelle migration sans modifier l’existante.
N’éditez pas directement des migrations déjà exécutées. Cela crée des incohérences avec les autres environnements ou la production. Ajoutez toujours vos changements dans une nouvelle migration.

Événements de migration

Chaque opération de migration déclenche un événement. Tous héritent de Illuminate\Database\Events\MigrationEvent. Par exemple, écoutez MigrationsEnded pour vider le cache à la fin :

Prochaines étapes

Seeding de base de données

Alimentez les tables créées par vos migrations avec des données d’exemple.

Introduction à Eloquent

Manipulez les tables issues des migrations avec l’ORM Eloquent.
Dernière modification le 13 juillet 2026