La structure d’une base de données joue un rôle déterminant dans la stabilité et l’évolution d’une application web.
Avec Laravel, les migrations offrent une approche moderne et rigoureuse pour gérer cette structure de manière fiable.
Elles permettent de décrire les tables, les colonnes et les relations directement dans le code, tout en assurant une parfaite synchronisation entre les différents environnements.
Pour les étudiants, les candidats aux examens techniques ou les développeurs en formation, comprendre le fonctionnement des migrations est une compétence incontournable.
Ce domaine touche à la fois à la conception des bases de données, à la maintenance des projets et au travail collaboratif.
Les notions abordées ici permettent de maîtriser la création, la modification et la suppression des structures de données, tout en respectant de bonnes pratiques professionnelles.
Cette page accompagne l’apprenant pas à pas, en lui donnant les clés nécessaires pour aborder sereinement la gestion du schéma de base de données avec Laravel.
La structure d’une base de données joue un rôle déterminant dans la stabilité et l’évolution d’une application web.
Avec Laravel, les migrations offrent une approche moderne et rigoureuse pour gérer cette structure de manière fiable.
Elles permettent de décrire les tables, les colonnes et les relations directement dans le code, tout en assurant une parfaite synchronisation entre les différents environnements.
Pour les étudiants, les candidats aux examens techniques ou les développeurs en formation, comprendre le fonctionnement des migrations est une compétence incontournable.
Ce domaine touche à la fois à la conception des bases de données, à la maintenance des projets et au travail collaboratif.
Les notions abordées ici permettent de maîtriser la création, la modification et la suppression des structures de données, tout en respectant de bonnes pratiques professionnelles.
Cette page accompagne l’apprenant pas à pas, en lui donnant les clés nécessaires pour aborder sereinement la gestion du schéma de base de données avec Laravel.
QCM
1
Corrigé
Quel est le but principal des migrations dans Laravel ?
A. Sauvegarder les données de la base de données
B. Versionner le schéma de la base de données comme du code source
C. Accélérer les requêtes SQL complexes
D. Générer automatiquement des interfaces d'administration
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Les migrations permettent de définir et de partager la structure des tables entre les développeurs.
QCM
2
Corrigé
Quelle commande Artisan permet de créer un nouveau fichier de migration ?
A. php artisan new:migration
B. php artisan generate:migration
C. php artisan make:migration
D. php artisan create:migration
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
La commande 'make:migration' est la commande standard pour générer un squelette de migration.
QCM
3
Corrigé
Dans quel dossier sont stockés les fichiers de migration par défaut ?
A. app/database/migrations
B. config/database
C. database/schema
D. database/migrations
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
Laravel centralise toutes les définitions de tables dans le dossier 'database/migrations'.
QCM
4
Corrigé
À quoi sert la méthode up() dans une classe de migration ?
A. À appliquer les changements (création de table, ajout de colonne)
B. À annuler la dernière opération effectuée
C. À mettre à jour les données existantes dans les tables
D. À augmenter la version du framework Laravel
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
La méthode up() contient les instructions exécutées lors de l'application de la migration.
QCM
5
Corrigé
Quelle méthode est appelée pour annuler les changements d'une migration ?
A. back()
B. down()
C. reverse()
D. delete()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
La méthode down() doit contenir l'opération inverse de up() pour permettre les retours en arrière.
QCM
6
Corrigé
Quelle commande exécute toutes les migrations en attente ?
A. php artisan migrate
B. php artisan migrate:run
C. php artisan database:apply
D. php artisan sql:execute
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
La commande 'migrate' synchronise votre base de données avec vos fichiers de migration.
QCM
7
Corrigé
Quelle commande permet d'annuler uniquement la dernière session de migrations ?
A. php artisan migrate:undo
B. php artisan migrate:back
C. php artisan migrate:rollback
D. php artisan migrate:reset
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
Le rollback annule les migrations qui ont été exécutées lors de la dernière commande 'migrate'.
QCM
8
Corrigé
Comment s'appelle la classe utilisée pour définir la structure d'une table dans une migration ?
A. Table
B. Schema
C. BluePrint
D. Builder
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
La façade Schema fournit les méthodes nécessaires pour créer ou modifier des tables.
QCM
9
Corrigé
Quelle méthode de la façade Schema est utilisée pour créer une nouvelle table ?
A. Schema::build()
B. Schema::new()
C. Schema::table()
D. Schema::create()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
create() prend en paramètres le nom de la table et une fonction anonyme définissant les colonnes.
QCM
10
Corrigé
Quel type de colonne génère l'ID auto-incrémenté par défaut dans Laravel récent ?
A. $table->id();
B. $table->integer('id');
C. $table->increments();
D. $table->bigInt();
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
$table->id() est un alias pour une colonne Big Integer auto-incrémentée servant de clé primaire.
QCM
11
Corrigé
À quoi sert la méthode $table->timestamps() ?
A. À enregistrer l'heure actuelle du serveur
B. À créer les colonnes created_at et updated_at
C. À calculer la durée d'exécution des requêtes
D. À gérer les fuseaux horaires de l'application
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Cette méthode crée deux colonnes gérées automatiquement par Eloquent pour le suivi temporel.
QCM
12
Corrigé
Quelle commande supprime toutes les tables et réexécute toutes les migrations ?
A. php artisan migrate:reload
B. php artisan migrate:refresh
C. php artisan migrate:clean
D. php artisan migrate:rebuild
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Refresh annule tout puis relance tout, idéal pour repartir sur une base propre.
QCM
13
Corrigé
Quelle méthode permet d'ajouter une colonne après une colonne existante (sur MySQL) ?
A. ->behind('colonne')
B. ->nextTo('colonne')
C. ->after('colonne')
D. ->position('colonne')
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
La méthode 'after' permet d'organiser l'ordre visuel des colonnes dans la base de données.
QCM
14
Corrigé
Comment rendre une colonne optionnelle (pouvant contenir NULL) ?
A. ->nullable()
B. ->optional()
C. ->empty()
D. ->null()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
nullable() modifie la contrainte SQL pour autoriser l'absence de valeur.
QCM
15
Corrigé
Quelle table Laravel utilise-t-il pour savoir quelles migrations ont déjà été exécutées ?
A. migrations_history
B. migrations
C. laravel_logs
D. schema_version
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
La table 'migrations' est créée automatiquement pour suivre l'état du versionnement.
QCM
16
Corrigé
Quelle commande supprime toutes les tables, sans réexécuter les migrations ?
A. php artisan migrate:reset
B. php artisan migrate:drop
C. php artisan db:wipe
D. php artisan migrate:clear
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
migrate:reset annule l'ensemble des migrations du projet en appelant leurs méthodes down().
QCM
17
Corrigé
Comment modifier le nom d'une colonne existante ?
A. $table->name('ancien', 'nouveau');
B. $table->renameColumn('ancien', 'nouveau');
C. $table->change('ancien', 'nouveau');
D. $table->update('ancien', 'nouveau');
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
renameColumn() génère le SQL nécessaire pour renommer un champ sans perdre les données.
QCM
18
Corrigé
Quelle méthode permet de définir une valeur par défaut pour une colonne ?
A. ->default(valeur)
B. ->set(valeur)
C. ->value(valeur)
D. ->initial(valeur)
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
default() spécifie la valeur injectée par la base de données si aucune n'est fournie.
QCM
19
Corrigé
Quelle commande Artisan affiche l'état (exécuté ou non) de chaque migration ?
A. php artisan migrate:status
B. php artisan migrate:list
C. php artisan migrate:show
D. php artisan migrate:check
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
migrate:status permet de voir rapidement quelles migrations sont en attente.
QCM
20
Corrigé
Comment créer une clé étrangère pointant vers la table 'users' ?
A. $table->foreign('user_id')->references('id')->on('users');
B. $table->linkTo('users');
C. $table->belongsTo('users');
D. $table->relation('users');
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
C'est la syntaxe classique pour définir les contraintes d'intégrité relationnelle.
QCM
21
Corrigé
Depuis Laravel 7+, quel raccourci permet de créer une clé étrangère ID plus simplement ?
A. $table->userId();
B. $table->addKey('user_id');
C. $table->foreignId('user_id');
D. $table->userKey();
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
foreignId() crée une colonne BIGINT non signée adaptée aux conventions de Laravel.
QCM
22
Corrigé
Que fait la commande php artisan migrate:fresh ?
A. Elle rafraîchit les données sans toucher aux tables
B. Elle répare les fichiers de migration corrompus
C. Elle supprime toutes les tables puis lance les migrations
D. Elle crée une sauvegarde avant de migrer
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
À la différence de refresh, fresh ignore les méthodes down() et supprime brutalement toutes les tables.
QCM
23
Corrigé
Comment ajouter un index 'unique' sur une colonne 'email' ?
A. $table->string('email')->unique();
B. $table->string('email')->single();
C. $table->string('email')->primary();
D. $table->string('email')->distinct();
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
La méthode unique() empêche les doublons de valeurs dans cette colonne au niveau SQL.
QCM
24
Corrigé
Quelle méthode permet de supprimer une table ?
A. Schema::remove('nom')
B. Schema::delete('nom')
C. Schema::dropIfExists('nom')
D. Schema::destroy('nom')
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
C
Justification :
dropIfExists() est sécurisée car elle ne lève pas d'erreur si la table n'existe pas.
QCM
25
Corrigé
Comment modifier le type d'une colonne (ex: passer de string à text) ?
A. $table->text('bio')->change();
B. $table->modify('bio', 'text');
C. $table->type('bio', 'text');
D. $table->convert('bio', 'text');
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
La méthode change() est utilisée après avoir redéfini le type pour modifier la colonne existante.
QCM
26
Corrigé
À quoi sert le préfixe horodaté dans le nom des fichiers de migration ?
A. À connaître la date de création pour le développeur
B. À déterminer l'ordre chronologique d'exécution des migrations
C. À éviter les doublons de noms de fichiers
D. À trier les fichiers par taille
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Laravel exécute les migrations dans l'ordre de leur création grâce à cet horodatage.
QCM
27
Corrigé
Quel type de colonne choisir pour stocker un texte très long (comme un article) ?
A. $table->string();
B. $table->char();
C. $table->blob();
D. $table->text();
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
D
Justification :
text() est adapté aux contenus longs, alors que string() est limité à 255 caractères par défaut.
QCM
28
Corrigé
Comment définir une colonne qui s'incrémente d'elle-même mais n'est pas la clé primaire ?
A. ->autoIncrement()
B. ->incrementing()
C. ->plusOne()
D. ->serial()
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
A
Justification :
autoIncrement() peut être ajouté à n'importe quelle colonne de type entier compatible.
QCM
29
Corrigé
Quelle commande permet de simuler l'exécution des migrations sans modifier la base ?
A. php artisan migrate --dry-run
B. php artisan migrate --pretend
C. php artisan migrate --fake
D. php artisan migrate --test
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
L'option --pretend affiche les requêtes SQL qui seraient exécutées au lieu de les lancer.
QCM
30
Corrigé
Quel est le risque principal si l'on modifie un fichier de migration déjà exécuté en production ?
A. Le fichier sera supprimé automatiquement
B. Laravel ne détectera pas le changement et le schéma divergera
C. La base de données sera verrouillée
D. Le serveur web s'arrêtera
Afficher la réponse
Cliquez pour voir la correction
Réponse correcte :
B
Justification :
Il faut toujours créer une NOUVELLE migration pour modifier une structure existante déjà déployée.
Mots & Définitions
Consultez les définitions des termes importants.
Une migration permet de décrire la structure de la base de données sous forme de code. Elle facilite l’évolution du schéma dans le temps et le travail en équipe.
Le versionnement consiste à suivre l’historique des modifications du schéma de la base. Il garantit la cohérence entre les environnements de développement, de test et de production.
Artisan est l’outil en ligne de commande de Laravel. Il permet d’exécuter facilement des tâches liées aux migrations et à la gestion de la base de données.
La méthode up décrit les changements à appliquer à la base de données. Elle est utilisée pour créer ou modifier des tables et des colonnes.
La méthode down permet d’annuler les changements définis dans une migration. Elle est essentielle pour revenir en arrière en cas d’erreur.
La façade Schema permet de manipuler la structure des tables. Elle fournit des méthodes claires pour créer, modifier ou supprimer des éléments.
Blueprint est la classe utilisée pour définir les colonnes et contraintes d’une table. Elle sert de plan détaillé lors de la création ou modification d’une table.
La clé primaire identifie de manière unique chaque ligne d’une table. Elle est souvent auto-incrémentée pour simplifier la gestion des enregistrements.
Les timestamps correspondent aux colonnes qui enregistrent les dates de création et de mise à jour. Ils facilitent le suivi de l’évolution des données.
Le rollback permet d’annuler une ou plusieurs migrations récemment exécutées. Il est utile pour corriger rapidement une modification incorrecte.
Cette table interne conserve la liste des migrations déjà exécutées. Elle permet à Laravel de savoir quelles opérations ont été appliquées.
Une clé étrangère établit une relation entre deux tables. Elle renforce l’intégrité des données en liant des enregistrements cohérents.
Un index unique empêche l’enregistrement de doublons dans une colonne. Il est souvent utilisé pour garantir l’unicité d’une information sensible.
La modification de colonne permet d’adapter le type ou les propriétés d’un champ existant. Elle doit être réalisée avec précaution pour éviter les incohérences.
L’ordre d’exécution des migrations est déterminé par leur horodatage. Il garantit que les changements sont appliqués dans une séquence logique.
À propos de ce QCM
Les migrations Laravel reposent sur une idée simple mais puissante : traiter la structure de la base de données comme du code versionné.
Chaque migration décrit une évolution précise, qu’il s’agisse de créer une table, d’ajouter une colonne ou de définir une relation entre plusieurs entités.
Cette approche permet de garder une trace claire de toutes les modifications et de les reproduire facilement sur différents environnements.
Les méthodes utilisées dans les migrations définissent clairement les actions à effectuer et celles permettant de revenir en arrière.
Cette possibilité de rollback est essentielle pour corriger une erreur sans mettre en péril l’ensemble du projet.
Les commandes Artisan associées offrent un contrôle précis sur l’exécution, la réinitialisation ou l’état des migrations, ce qui renforce la sécurité du processus.
La définition des colonnes, des clés primaires et des clés étrangères assure l’intégrité des données et une organisation cohérente de la base.
Les index, les valeurs par défaut et les contraintes permettent d’optimiser les performances tout en garantissant la qualité des informations stockées.
Les timestamps, quant à eux, facilitent le suivi des modifications dans le temps.
En s’entraînant avec ces QCM, l’apprenant développe une compréhension solide des mécanismes internes des migrations.
Il apprend à anticiper les impacts des changements, à structurer correctement une base de données et à adopter une démarche professionnelle.
Ces compétences sont essentielles aussi bien pour réussir des examens que pour travailler sur des projets concrets et évolutifs.
Conclusion
Les migrations constituent un outil fondamental pour concevoir et faire évoluer une base de données de manière maîtrisée.
Elles apportent de la clarté, de la sécurité et une grande souplesse dans la gestion des projets Laravel.
En s’exerçant régulièrement, l’apprenant consolide ses connaissances et acquiert des réflexes essentiels pour structurer des applications fiables.
Cette pratique progressive favorise une meilleure compréhension des enjeux techniques et renforce la capacité à intervenir sur des projets réels.
Ces QCM offrent ainsi un cadre idéal pour s’entraîner, progresser et gagner en assurance dans la gestion des bases de données avec Laravel.