Programmer avec Laravel Développer en back-end
Générateur de requêtes (Query Builder)
Introduction
Le générateur de requêtes de base de données de Laravel fournit une interface
pratique et fluide pour créer et exécuter des requêtes de base de données.
Il peut être utilisé pour effectuer la plupart des opérations de base de données dans votre
application et fonctionne parfaitement avec tous les systèmes de base de données pris en
charge par Laravel.
Le générateur de requêtes Laravel utilise la liaison de paramètres PDO pour protéger votre
application contre les attaques par injection SQL.
Il n'est pas nécessaire de nettoyer ou d'assainir les chaînes transmises au générateur de
requêtes en tant que liaisons de requête.
Insert, Update et Delete
Créer un contrôleur StagiaireController et ajouter la méthode suivante :
La méthode insert() permet d’insérer une ligne dans une table.
public function insert(Request $request){
DB::table('stagiaires')->insert([
'nom'=>$request->nom,
'prenom'=>$request->prenom,
'age'=>$request->age
]);
return response("l'ajout est effectué avec succès ... ");
}
La méthode insertGetId() fait le même chose que insert() mais en plus vous permet de
récupérer l’id créé pour cette enregistrement. Bien évidement insertGetId() ne marche
qu’avec des tables ayant un id en auto incrémentation.
public function insert(Request $request){
$id=DB::table('stagiaires')->insertGetId([
'nom'=>$request->nom,
'prenom'=>$request->prenom,
'age'=>$request->age
]);
return response("l'ajout est effectué avec succès ... ".$id);
}
La méthode update() permet de mettre à jour des données.
public function update(Request $request, string $id){
DB::table('stagiaires')->where('id',$id)->update([
'nom'=>$request->nom,
'prenom'=>$request->prenom,
'age'=>$request->age
]);
return response("la mise à jour est effectué avec succès ... ");
}
Formateur : M.Qassi @ISTA ALADARISSA Page 1 | 3
Programmer avec Laravel Développer en back-end
La méthode delete() permet de supprimer un enregistrement
public function delete(Request $request){
DB::table('stagiaires')->where('id',$request->id)->delete();
return response("la supression est effectué avec succès ... ");
}
Sélectionner des résultats
Query Builder est accessible via la façade DB et permet de sélectionner une table puis utiliser
des méthodes pour recèperez les données.
La méthode get() permet de récupérer un groupe de résultat.
public function index(){
$sta=DB::table('stagiaires')->get();
return $sta;
}
La méthode where() permet de poser une condition à la sélection de résultat :
$sta=DB::table('stagiaires')-> where('age','>',20)->get();
La méthode first() a un fonctionnement similaire à get() mais ne récupère que le premier
résultat correspondant à la requête.
$sta=DB::table('stagiaires')->first();
La méthode find() permet de sélectionner un résultat d’après un id que l’on passe en
paramètre :
$sta=DB::table('stagiaires')->find(id);
La méthode orderBy() Permet d’organiser les résultats en les rangeant dans un order
ascendant (ASC) ou descendant (DESC) d’après une colonne de la table :
$sta=DB::table('stagiaires')->orderBy('nom', 'DESC')->get();
Les méthodes latest() et oldest() rangent les données par date en prenant comme référence par
défaut la colonne ‘created_at’.
Si vous voulez appliquer ces méthodes à une autre colonne vous n’avez qu’à passer en
paramètre le nom de celle-ci.
Ici je n’ai pas mis de timestamps mais nous pouvons par exemple appliquer cette méthode
avec la colonne ‘id’.
$sta=DB::table('stagiaires')->latest('id')->first();
La méthode inRandomOrder() vous permet tout simplement de sortir vos résultats dans un
ordre aléatoire.
La méthode groupBy permet de grouper les résultats par valeur(s) d’une ou plusieurs
colonnes.
$sta=DB::table('stagiaires')->groupBy('age')->get();
Formateur : M.Qassi @ISTA ALADARISSA Page 2 | 3
Programmer avec Laravel Développer en back-end
Opérations numérique
Vous pouvez également appliquer des opérations numériques existantes dans les commandes
SQL :
$max_age = DB::table('stagiaires')->max('age');
$min_age = DB::table('stagiaires')->min('age');
$average_age = DB::table('stagiaires')->avg('age');
$sum_age = DB::table('stagiaires')->sum('age');
NB.
Nous venons de voir un ensemble de méthode appliquées à la façade DB mais sachez que ces
méthodes sont également disponible via le model
Formateur : M.Qassi @ISTA ALADARISSA Page 3 | 3