Laravel Collection - méthode map()

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"
    ]
  ]
}


Article rédigé par Vincent, publié le 27/08/2020