jmarrdiaz
2/21/2017 - 9:33 AM

#Laravel #Collection. Ejemplo de 'when' (v5.4.12)

#Laravel #Collection. Ejemplo de 'when' (v5.4.12)

Para demostrar este ejemplo, supongamos que tenemos una lista de los sitios de Laravel News Podcast:

$hosts = [
['name' => 'Eric Barnes', 'location' => 'USA', 'is_active' => 0],
['name' => 'Jack Fruh', 'location' => 'USA', 'is_active' => 0],
['name' => 'Jacob Bennett', 'location' => 'USA', 'is_active' => 1],
['name' => 'Michael Dyrynda', 'location' => 'AU', 'is_active' => 1],
];

Anteriormente para filtrar la consulta podías hacer algo como esto

$inUsa = collect($hosts)->where('location', 'USA');
if (request('retired')) {
$inUsa = $inUsa->filter(function($employee){
return ! $employee['is_active'];
});
}

Con el nuevo método when puedes hacer todo en un solo encadenamiento.

$inUsa = collect($hosts)
->where('location', 'USA')
->when(request('retired'), function($collection) {
return $collection->reject(function($employee){
return $employee['is_active'];
});
});