Skip to main content

Qu’est-ce que le Query Builder

Le query builder de Laravel construit et exécute les requêtes SQL via une interface fluent. Point de départ : DB::table(), suivi d’un chaînage de méthodes.
En interne, les paramètres sont liés via PDO, ce qui prévient automatiquement les injections SQL.
Le query builder fonctionne avec toutes les bases prises en charge par Laravel (MySQL, MariaDB, PostgreSQL, SQLite, SQL Server). Le code reste identique quand vous changez de base.

Query Builder vs Eloquent

Lecture des données

Tous les enregistrements

get() retourne une Illuminate\Support\Collection d’objets stdClass.

Un enregistrement

Liste d’une colonne

Traitement par lots

Utilisez chunkById() (pas chunk()) si vous modifiez/supprimez des enregistrements pendant l’itération, pour éviter les décalages.

Streaming (LazyCollection)

Agrégations

Existence

Clause SELECT

Clause WHERE

Conditions de base

Groupement de conditions

whereIn / whereBetween / whereNull

whereLike (pattern matching)

whereAny / whereAll

whereNullSafeEquals

whereNullSafeEquals traite NULL = NULL comme vrai (contrairement à = classique). Équivalent à <=> sous MySQL, IS NOT DISTINCT FROM sous PostgreSQL.
where('column', null) devient WHERE column IS NULL. whereNullSafeEquals reste cohérent quelle que soit la valeur bindée.

JOIN

JOIN par sous-requête

ORDER BY / GROUP BY / LIMIT

Sous-requêtes

Expressions Raw

Les expressions Raw sont insérées telles quelles dans la requête. Ne concaténez jamais l’input utilisateur : utilisez toujours les bindings.

INSERT / UPDATE / DELETE

INSERT

UPSERT

UPDATE

DELETE

Requête conditionnelle (when)

Applique une condition dynamiquement sans casser le chaînage.

Débogage

dd() est utile en dev, mais à proscrire en production. Préférez toSql() + getBindings().

Récapitulatif

Le Query Builder est plus bas niveau et retourne stdClass, non des instances de modèle. Sans besoin de relations ou d’événements (observers), il est plus simple et plus rapide.
Dernière modification le 13 juillet 2026