Laravel : Récupérer les données d'un modèle entre deux dates

Mis à jour il y a 1 an

Trois méthodes sont expliquées pour récupérer des données entre les dates de début et de fin d'un modèle dans un projet Laravel 10.

Wilo Ahadi

Auteur

Wilo A.

Technologies

Laravel, PHP
Voir aussi Un tutoriel pour obtenir les propriétés d’un fichier (nom, extension, chemin, taille, date de modification, …) et écrire dans un fichier avec la classe PHP SplFileInfo En savoir plus

Introduction

Récupérer les entrées d'une table dans l'intervalle de deux dates (date initial et date finale) peut vous permettre de limiter les résultats pour les afficher sous forme de graphiques, tableaux, ... sur une période de temps déterminée.

Dans cet article, nous allons voir comment récupérer des données d'un modèle entre deux dates précises dans un projet Laravel. Pour ce faire, nous utiliserons les méthodes where(), whereDate() et whereBetween().

Au moment de la rédaction de cet article, j'utilise la version 10.5.1 de Laravel.

La version anglaise de cette publication : Laravel : Retrieve data from a model between two dates

Méthode 1 : where

La méthode where($column, $operators, $date) récupère les données d'une table à l'aide des opérateurs de comparaison $operators sur la date $date en vérifiant si une valeur dans la colonne $column répond aux critères.

Exemple : Récupérons les utilisateurs (modèle User) enregistrés (created_at) entre le 1er janvier 2022 (inclus) et le 01 janvier 2023 (exclu) :

$date_1 = new Carbon("2022-01-01"); // Date initiale

$date_2 = new Carbon("2023-01-01"); // Date finale

$users= User::where("created_at", ">=", $date_1)->where('created_at', "<", $date_2)->orderBy('created_at')->get();

La requête SQL suivante est exécutée dans cet exemple :

select * from `users` where `created_at` >= $date_1 and `created_at` < $date_2 order by `created_at` asc

Méthode 2 : whereDate

Similaire à la méthode where(), la méthode whereDate($column, $operators, $date) récupère les données d'une table en comparant le champ $date de type datetime ou timestamp avec les valeurs de la colonne $column par les opérateurs de comparaison $operators.

Revenons à l'exemple précédent, cette fois en utilisant la méthode whereDate() :

$users= User::whereDate("created_at", ">=", $date_1)->whereDate('created_at', "<", $date_2)->orderBy('created_at')->get();

La requête SQL suivante est exécutée dans cet exemple :

select * from `users` where date(`created_at`) >= $date_1 and date(`created_at`) < $date_2 order by `created_at` asc

Méthode 3 : whereBetween

La méthode whereBetween($column, $date_interval) filtre les données d'une table par la colonne $column et entre les dates spécifiées dans le tableau (intervalle) $date_interval.

En utilisant la méthode whereBetween(), notre exemple devient :

$users = User::whereBetween("created_at", [ $date_1, $date_2 ])->orderBy('created_at')->get();

La requête SQL suivante est exécutée dans cet exemple :

select * from `users` where `created_at` between $date_1 and $date_2 order by `created_at` asc

Nous venons de voir trois techniques pour récupérer des données comprises entre deux dates en utilisant les méthodes where(), whereDate() et whereBetween() dans un projet Laravel. A travers les exemples, nous avons vu les différentes requêtes SQL exécutées. Vous êtes libre d'utiliser la méthode qui vous convient 😜

Cordialement.

Cette publication vous a plu ?
Partagez-la avec vos ami(e)s sur les réseaux sociaux.

Wilo Ahadi

Wilo Ahadi, l'auteur

Passionné de l'informatique, je suis spécialiste en techniques des systèmes et réseaux, développeur web et mobile, infographiste et designer, ... J'aime partager mon expérience en formant sur la plateforme Akili School

Voir profil

Commentaires