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.
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
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
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
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, 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