A la découverte de la méthode map() de Laravel.
La méthode map applique une fonction de rappel à chaque élément d'une collection. La fonction de rappel modifiera l'élément et créera une nouvelle collection Laravel.
Exemple :
$query = Session::query(); $sessions = $query ->where('published', 1) ->get(); $results = $sessions ->map(function ($session) { return [ 'id' => $session->id, 'activity_id' => $session->activity_id, 'activity_name' => $session->activity->name, 'name' => $session->name, 'start' => $session->date_start->format('Y-m-d H:i') ]; }) ->sortBy('start') ->sortBy('activity_id');
Dans cet exemple concret, nous allons récupérer l'ensemble des sessions (cours) qui sont publiées. Puis, grâce à la méthode map(), nous allons garder certains éléments, parfois dépendants d'autres collections puis les trier.
Voici le résultat :
Illuminate\Support\Collection {#1418 ▼ #items: array:4 [▼ 0 => array:6 [▼ "id" => 1 "activity_id" => 1 "activity_name" => "activity 1" "name" => "test" "start" => "2020-08-29 00:00" ] 3 => array:6 [▼ "id" => 4 "activity_id" => 1 "activity_name" => "activity 1" "name" => "test4" "start" => "2020-08-30 00:00" ] 2 => array:6 [▼ "id" => 3 "activity_id" => 2 "activity_name" => "activity 2" "name" => "test3" "start" => "2020-08-30 00:00" ] 1 => array:6 [▼ "id" => 2 "activity_id" => 2 "activity_name" => "activity 2" "name" => "test2" "start" => "2020-08-31 00:00" ] ] }
Cours rédigé par Vincent, publié le 27/08/2020