Qu'est-ce que la migration de base de données dans Laravel ?
Qu'est-ce que la migration de base de données dans Laravel ?
Les migrations de base de données Laravel offrent un mécanisme puissant pour gérer les modifications du schéma de base de données de votre application de manière structurée et versionnée. Elles agissent comme un contrôle de version pour votre base de données, garantissant que la structure de votre base de données évolue en même temps que le code de votre application.
Avantages de l'utilisation des migrations
- Contrôle de version : Les migrations sont suivies dans les systèmes de contrôle de version comme Git, ce qui vous permet d'examiner les modifications, de revenir à des états précédents et de partager facilement les mises à jour de schéma entre les environnements de développement.
- Collaboration d'équipe : Les migrations permettent une collaboration transparente en fournissant un historique clair des modifications du schéma de base de données, facilitant la compréhension et l'application des modifications par les membres de l'équipe.
- Agnosticisme de la base de données : Le générateur de schéma de Laravel offre une prise en charge indépendante de la base de données. Vous pouvez écrire des migrations une fois et les faire fonctionner avec divers systèmes de bases de données tels que MySQL, PostgreSQL, SQLite et SQL Server.
Création d'une migration
-
Générer un fichier de migration : Utilisez la commande Laravel Artisan pour créer un nouveau fichier de migration :
Bash
php artisan make:migration CréerTableUtilisateurs
Cette commande crée un nouveau fichier de migration nommé
CréerTableUtilisateurs_AA-MM-JJ_HHMMSS.php
(où l'horodatage garantit un ordre chronologique) dans le répertoiredatabase/migrations
. -
Définir la méthode Up : La méthode
up
contient la logique de création de la table de base de données ou d'apporter des modifications au schéma. Voici un exemple de création d'une tableutilisateurs
avec des colonnes pourid
,nom
,email
etmot_de_passe
:PHP
public function up() { Schema::create('utilisateurs', function (Blueprint $table) { $table->id(); $table->string('nom'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('mot_de_passe'); $table->rememberToken(); $table->timestamps(); }); }
Schema::create
prend le nom de la table et une fermeture pour définir ses colonnes en utilisant l'API fluide fournie par le générateur de schéma de Laravel.- Diverses méthodes comme
id()
,string()
,unique()
,nullable()
, etc. sont disponibles pour définir les types de données et les contraintes des colonnes.
-
Définir la méthode Down (facultatif) : La méthode
down
vous permet d'annuler les modifications apportées dans la méthodeup
. Ceci est utile pour restaurer les migrations si nécessaire. Dans cet exemple :PHP
public function down() { Schema::dropIfExists('utilisateurs'); }
Exécuter des migrations
-
Migrer la base de données (nouvelle installation) : Après avoir créé des migrations, exécutez la commande suivante pour appliquer toutes les migrations en attente (en supposant une base de données MySQL) :
Bash
php artisan migrate
-
Migrer une migration individuelle : Pour appliquer une migration spécifique, utilisez :
Bash
php artisan make:migration CréerTableArticles php artisan migrate
-
Annuler les migrations : Pour annuler les modifications apportées par une migration :
Bash
php artisan migrate:rollback
Bonnes pratiques
- Nommage descriptif : Utilisez des noms clairs et concis pour les fichiers de migration qui reflètent leur objectif (par exemple,
CréerTableUtilisateurs
,AjouterPhotoProfilAuxUtilisateurs
). - Changements atomiques : Assurez-vous que chaque migration effectue une seule modification atomique au schéma de base de données. Cela simplifie la restauration et le débogage.
- Commentaires : Ajoutez des commentaires à vos fichiers de migration pour expliquer le but de chaque modification, en particulier pour les migrations complexes.
- Données d'amorçage : Si vous devez initialiser votre base de données avec des données initiales après les migrations, envisagez d'utiliser la fonctionnalité d'amorçage de base de données de Laravel (https://laravel.com/docs/11.x/seeding).