QCM Laravel - Eloquent ORM
Quiz interactif sur Eloquent ORM de Laravel. Testez vos connaissances sur les modèles, les relations et les requêtes.
Comment jouer ?
- 1. Lisez chaque question attentivement
- 2. Choisissez votre réponse parmi les options
- 3. Cliquez sur "Voir la réponse" pour vérifier
- 4. Comptez vos bonnes réponses à la fin !
Quiz: QCM Laravel - Eloquent ORM
10 questions | Difficulté: moyen
Question 1
Quelle méthode Eloquent permet de récupérer tous les enregistrements d’une table ?
- A.
Model::get() - B.
Model::all() - C.
Model::fetch() - D.
Model::select()
Voir la réponse
Réponse correcte: B
Model::all() récupère tous les enregistrements. Model::get() est utilisé après une chaîne de méthodes comme where() ou orderBy().
Question 2
Comment définir une relation “un à plusieurs” (hasMany) dans un modèle Eloquent ?
- A.
return $this->hasMany(Comment::class); - B.
return $this->belongsToMany(Comment::class); - C.
return $this->hasOne(Comment::class); - D.
return $this->manyToMany(Comment::class);
Voir la réponse
Réponse correcte: A
hasMany() définit une relation un-à-plusieurs. Par exemple, un Post a plusieurs Comments. La relation inverse utilise belongsTo().
Question 3
Quelle commande Artisan crée un modèle avec sa migration ?
- A.
php artisan make:model Post - B.
php artisan make:model Post -m - C.
php artisan make:model Post --migration - D. Les options B et C sont correctes
Voir la réponse
Réponse correcte: D
-m et --migration sont équivalents et créent une migration avec le modèle. On peut aussi ajouter -c pour le controller et -f pour la factory.
Question 4
Comment activer le soft delete sur un modèle Eloquent ?
- A. Ajouter une colonne
deletedà la table - B. Utiliser le trait
SoftDeleteset ajouter une colonnedeleted_at - C. Configurer le soft delete dans le fichier config
- D. Appeler
$model->enableSoftDelete()
Voir la réponse
Réponse correcte: B
Pour activer le soft delete, il faut: 1) utiliser use SoftDeletes; dans le modèle, et 2) ajouter $table->softDeletes(); dans la migration pour créer la colonne deleted_at.
Question 5
Qu’est-ce que le Mass Assignment dans Eloquent ?
- A. La création de plusieurs enregistrements en même temps
- B. L’assignation de plusieurs attributs d’un modèle via un tableau
- C. La mise à jour de plusieurs tables simultanément
- D. L’import massif de données depuis un fichier CSV
Voir la réponse
Réponse correcte: B
Le Mass Assignment permet d’assigner plusieurs attributs via un tableau, comme User::create(['name' => 'John', 'email' => 'john@example.com']). Il faut définir $fillable ou $guarded pour la sécurité.
Question 6
Comment définir une relation many-to-many entre User et Role ?
- A.
return $this->hasMany(Role::class); - B.
return $this->belongsToMany(Role::class); - C.
return $this->manyToMany(Role::class); - D.
return $this->hasManyThrough(Role::class);
Voir la réponse
Réponse correcte: B
belongsToMany() définit une relation many-to-many. Elle nécessite une table pivot (ex: role_user) qui contient les clés étrangères des deux modèles.
Question 7
Quelle méthode permet de récupérer un enregistrement ou lancer une erreur 404 ?
- A.
Model::find($id) - B.
Model::findOrFail($id) - C.
Model::findOr404($id) - D.
Model::getOrFail($id)
Voir la réponse
Réponse correcte: B
findOrFail($id) récupère l’enregistrement ou lance une exception ModelNotFoundException qui se traduit par une erreur 404. find($id) retourne null si non trouvé.
Question 8
Comment eager load les relations pour éviter le problème N+1 ?
- A.
Post::all()->load('comments'); - B.
Post::with('comments')->get(); - C.
Post::eager('comments')->get(); - D.
Post::include('comments')->get();
Voir la réponse
Réponse correcte: B
with() charge les relations de manière “eager” (en avance), évitant ainsi le problème N+1 où chaque accès à une relation génère une nouvelle requête.
Question 9
Qu’est-ce qu’un Accessor dans Eloquent ?
- A. Une méthode pour accéder à la base de données
- B. Une méthode qui modifie un attribut lors de sa lecture
- C. Une méthode pour valider les données
- D. Une méthode pour gérer les permissions
Voir la réponse
Réponse correcte: B
Un Accessor permet de modifier la valeur d’un attribut lors de sa lecture. Par exemple: getFullNameAttribute() peut concaténer prénom et nom.
Question 10
Comment créer une requête avec une condition “where” en Eloquent ?
- A.
User::where('status', '=', 'active')->get(); - B.
User::where('status', 'active')->get(); - C. Les deux syntaxes A et B sont correctes
- D.
User::filter('status', 'active')->get();
Voir la réponse
Réponse correcte: C
Les deux syntaxes sont valides. where('column', 'value') utilise = par défaut. On peut aussi spécifier l’opérateur: where('age', '>', 18).