Posted in

10 Collection Methods poco conocidos en Laravel

Tomaremos como ejemplo una base de datos de libros

$books = Book::where('release_year', 2015)->get();

Obtenemos el siguiente resultado:

[
    ['title' => 'Lean Startup', 'price' => 10],
    ['title' => 'The One Thing', 'price' => 15],
    ['title' => 'Laravel: Code Bright', 'price' => 20],
    ['title' => 'The 4-Hour Work Week', 'price' => 5],
]

1. avg()
Este método calcuaría el precio medio del libro

$average_price = $books->avg('price'); // in our case, 12.5

2. chunk()
Si queremos dividir los resultados en partes iguales, por ejemplo para mostrarlos en columnas diferentes

$chunks = $books->chunk(2);
$chunks->toArray();

El resultado sería:

[
[
    ['title' => 'Lean Startup', 'price' => 10],
    ['title' => 'The One Thing', 'price' => 15]
],
[
    ['title' => 'Laravel: Code Bright', 'price' => 20],
    ['title' => 'The 4-Hour Work Week', 'price' => 5],
]
]

3. contains()
Comprueba si uno de nuestros campos contiene cierto valor.

$books->contains('title', 'The One Thing'); // TRUE
$books->contains('title', 'The Second Thing'); // FALSE

4. every()
Otro método para dividir la colección en columnas diferentes. Esta vez, cada () formaría una nueva colección, que consistiría en cada N-ésimo elemento.

$books->every(2); // every 2nd element

6. forget()
Este método se usa para no incluir ciertos campos.

$books->forget('price');

El resultado:

[
    ['title' => 'Lean Startup'],
    ['title' => 'The One Thing'],
    ['title' => 'Laravel: Code Bright'],
    ['title' => 'The 4-Hour Work Week'],
]

7. implode()
Similar a la ya conocida función de PHP implode().

$books->implode('title', ', ');

El resultado:

'Lean Startup, The One Thing, Laravel: Code Bright, The 4-Hour Work Week'

8. keyBy()
Muy útil para utilizar en ciclos foreach más adelante. Básicamente, transforma una colección en una matriz con la clave elegida.

 
$by_key = $books->keyBy('title');
$by_key->all();

El resultado:

[

    'Lean Startup' => ['title' => 'Lean Startup', 'price' => 10],
    'The One Thing' => ['title' => 'The One Thing', 'price' => 15],
    'Laravel: Code Bright' => ['title' => 'Laravel: Code Bright', 'price' => 20],
    'The 4-Hour Work Week' => ['title' => 'The 4-Hour Work Week', 'price' => 5],
]

9. map()
Para extraer algunos valores y realizar algunas acciones con ellos.

$discounted_books = $books->map(function ($item) {
    return ['title' => $item->title, 'price' => $item->price / 2];
});

El resultado:

[
    ['title' => 'Lean Startup', 'price' => 5],
    ['title' => 'The One Thing', 'price' => 7.5],
    ['title' => 'Laravel: Code Bright', 'price' => 10],
    ['title' => 'The 4-Hour Work Week', 'price' => 2.5],
]

10. pluck()
Este método permite extraer fácilmente solo una columna.

$prices = $books->pluck('price');
$plucked->all();

El resultado:

[10, 15, 20, 5]

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *


The reCAPTCHA verification period has expired. Please reload the page.