Vous êtes sur la page 1sur 8

Sommaire

1. Introduction aux migrations en Laravel


2. Configuration des migrations
3. Création de tables avec migrations
4. Modification des tables avec migrations
5. Suppression de tables avec migrations
6. Exemples de migrations avec Laravel
7. Exercices pratiques avec corrections

Les migrations en Laravel permettent aux développeurs de gérer les changements de


schéma de base de données de manière efficace. Les migrations sont des fichiers qui
décrivent les modifications apportées à la structure de la base de données.

Laravel fournit une interface de ligne de commande pour générer et exécuter des
migrations, ce qui facilite la gestion des modifications apportées à la base de
données.

2. Configuration des migrations

Pour utiliser les migrations dans Laravel, vous devez configurer votre base de
données. Pour ce faire, vous devez modifier le fichier .env et y ajouter les
informations de connexion à votre base de données.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=nom_de_la_base_de_donnees
DB_USERNAME=nom_d_utilisateur
DB_PASSWORD=mot_de_passe

3. Création de tables avec migrations

Pour créer une table avec une migration, vous devez exécuter la commande suivante
dans la console Laravel :

php artisan make:migration create_nom_de_la_table_table --create=nom_de_la_table

Cela générera un fichier de migration dans le dossier database/migrations. Vous pouvez


alors ouvrir le fichier et ajouter les colonnes de votre table à l'aide de la méthode up :

public function up()

{
Schema::create('nom_de_la_table', function (Blueprint $table) {

$table->id();

$table->string('nom');

$table->string('email')->unique();

$table->timestamps();

});

Lorsque vous êtes prêt à exécuter la migration, exécutez la commande suivante :

php artisan migrate

Cela exécutera toutes les migrations en attente.

Voici quelques exemples de commandes php artisan migrate :

1. php artisan migrate : Cette commande permet de lancer toutes les


migrations en attente pour la base de données.

2. php artisan migrate:fresh : Cette commande supprime toutes les tables de la


base de données et exécute toutes les migrations.

3. php artisan migrate:rollback : Cette commande annule la dernière migration


exécutée. Si plusieurs migrations ont été exécutées, il est possible de spécifier
le nombre de migrations à annuler en utilisant l'option --step.

4. php artisan migrate:status : Cette commande affiche l'état de chaque


migration (appliquée ou non) de la base de données.

5. php artisan migrate:make : Cette commande permet de créer une nouvelle


migration. Elle prend en paramètre le nom de la migration à créer.

6. php artisan migrate:reset : Cette commande annule toutes les migrations


exécutées.

Voici quelques exemples d'utilisation de ces commandes :

1. Exécution de toutes les migrations en attente : php artisan migrate

2. Suppression de toutes les tables et exécution de toutes les migrations : php


artisan migrate:fresh
3. Annulation de la dernière migration exécutée : php artisan migrate:rollback

4. Affichage de l'état de chaque migration : php artisan migrate:status

5. Création d'une nouvelle migration : php artisan make:migration


create_users_table

6. Annulation de toutes les migrations : php artisan migrate:reset

4. Modification des tables avec migrations

Pour modifier une table existante, vous pouvez créer une nouvelle migration en
utilisant la commande suivante :

php artisan make:migration nom_de_la_migration --table=nom_de_la_table

Cela générera un fichier de migration qui contiendra une méthode up et une


méthode down. La méthode up contiendra le code pour effectuer la modification de la
table, tandis que la méthode down contiendra le code pour annuler la modification.

Par exemple, pour ajouter une colonne à une table, vous pouvez utiliser la méthode
addColumn :

public function up()

Schema::table('nom_de_la_table', function (Blueprint $table) {

$table->string('nouvelle_colonne');

});

public function down()

Schema::table('nom_de_la_table', function (Blueprint $table) {

$table->dropColumn('nouvelle_colonne');

});

}
Lorsque vous êtes prêt à exécuter la migration, exécutez la commande suivante :

php artisan migrate

Cela exécutera toutes les migrations en attente.

5. Suppression de tables avec migrations

Pour supprimer une table avec une migration, vous pouvez créer une nouvelle
migration en utilisant la commande suivante :

php artisan make:migration drop_nom_de_la_table_table --table=nom_de_la_table

Cela générera un fichier de migration qui contiendra une méthode `up` et une méthode `down`. La
méthode `up` contiendra le code pour supprimer la table, tandis que la méthode `down` contiendra
le code pour recréer la table.

Par exemple, pour supprimer une table nommée `users`, vous pouvez utiliser la méthode
`dropIfExists` :

```php

public function up()

Schema::dropIfExists('users');

public function down()

Schema::create('users', function (Blueprint $table) {

$table->id();

$table->string('nom');

$table->string('email')->unique();

$table->timestamps();

});

}
Lorsque vous êtes prêt à exécuter la migration, exécutez la commande suivante :

php artisan migrate

Cela exécutera toutes les migrations en attente.

6. Exemples de migrations avec Laravel

Voici quelques exemples de migrations que vous pouvez utiliser pour votre projet
Laravel :

 Créer une table articles avec les colonnes id, titre, contenu et date de
publication :
public function up()

Schema::create('articles', function (Blueprint $table) {

$table->id();

$table->string('titre');

$table->text('contenu');

$table->timestamp('date_publication')->nullable();

$table->timestamps();

});

public function down()

Schema::dropIfExists('articles');

Ajouter une colonne slug à la table articles :

public function up()

Schema::table('articles', function (Blueprint $table) {

$table->string('slug')->unique();
});

public function down()

Schema::table('articles', function (Blueprint $table) {

$table->dropColumn('slug');

});

Supprimer la table categories :

public function up()

Schema::dropIfExists('categories');

public function down()

Schema::create('categories', function (Blueprint $table) {

$table->id();

$table->string('nom');

$table->timestamps();

});

7. Exercices pratiques avec corrections

Exercice 1 : Créez une migration pour une table utilisateurs avec les colonnes id,
nom, email et mot de passe.

Correction :

php artisan make:migration create_utilisateurs_table --create=utilisateurs


public function up()

Schema::create('utilisateurs', function (Blueprint $table) {

$table->id();

$table->string('nom');

$table->string('email')->unique();

$table->string('mot_de_passe');

$table->timestamps();

});

public function down()

Schema::dropIfExists('utilisateurs');

Exercice 2 : Ajoutez une colonne rôle à la table utilisateurs.

Correction :

php artisan make:migration add_role_to_utilisateurs_table --table=utilisateurs

public function up()

Schema::table('utilisateurs', function (Blueprint $table) {

$table->string('role')->default('utilisateur');

});

public function down()

Schema::table('utilisateurs', function (Blueprint $table) {

$table->dropColumn('role');
});

Exercice 3 : Créez une migration pour une table `commentaires` avec les colonnes `id`, `contenu` et
`date de création`. La table doit être associée à la table `articles`.

Correction :

```php

php artisan make:migration create_commentaires_table --create=commentaires

public function up()

{ Schema::create('commentaires', function (Blueprint $table) {

$table->id();

$table->text('contenu');

$table->timestamp('created_at')->nullable();

$table->foreignId('article_id')->constrained();

$table->timestamps();

});

public function down()

Schema::dropIfExists('commentaires');

8. Conclusion

Les migrations sont un outil très utile pour la gestion de la base de données dans un
projet Laravel. Elles permettent de créer et de modifier facilement la structure de la
base de données, tout en gardant une trace de toutes les modifications effectuées. En
suivant les bonnes pratiques et en utilisant les outils fournis par Laravel, vous pouvez
facilement gérer les migrations dans votre projet et garantir une base de données
stable et bien structurée.

Vous aimerez peut-être aussi