Método de Filter de Collections do Laravel 6/7

Posted on: November 07, 2020 05:56 PM

Posted by: Renato

Categories: Laravel

Views: 49

Collection filter() é um método embutido do Laravel que chama o método PHP array_filter() no array subjacente, que, de acordo com a documentação do PHP, preserva as chaves do array. O Laravel Eloquent usa Coleções para retornar os resultados. As coleções contêm métodos úteis que os tornam muito poderosos e úteis de usar. Você pode filtrá-los, modificá-los e muito mais com eles de forma muito conveniente.


Método de Filtro de Coleções do Laravel 6
O  método filter() filtra a coleção usando o retorno de chamada fornecido, mantendo apenas os itens que passam em um determinado teste de verdade. Se você não está familiarizado com as Coleções do Laravel, dê uma olhada no meu  guia de Exemplo de Coleções do Laravel . 

Você pode encontrar  o método de filtro de coleção  dentro da  classe Illuminate \ Support \ Collection  . Veja o método abaixo.

public function filter(callable $callback = null)
{
     if ($callback) {
         return new static(Arr::where($this->items, $callback));
     }

     return new static(array_filter($this->items));
}

A  função de filtro  recebe um retorno de chamada como argumento e executa o filtro em cada item. Se o teste falhar para um item específico, ele o removerá da coleção.

Agora, vamos ver o exemplo em ação. Para isso, você precisa instalar o Laravel em sua máquina. Eu já fiz isso.

A partir de agora iremos testar cada Método de Coleções do Laravel dentro do  arquivo routes >> web.php  .

Escreva o seguinte código dentro do  arquivo web.php  .

<?php

// web.php

Route::get('/', function () {
    $collection = collect([19, 21, 29, 46]);

    $filtered = $collection->filter(function ($value, $key) {
        return $value > 21;
    });

    dd($filtered->all());
});

Portanto, verificamos cada item da coleção em relação a 21  e, se algum item > 21 na coleção, ele será incluído em uma nova matriz.

Agora, inicie o servidor Laravel digitando o seguinte comando na raiz do seu projeto.

php artisan serve

Vá para  http://localhost:8000 e veja o array

Isso significa que ele criou um array com todos os itens> 21. Os itens restantes serão removidos da coleção.

Se nenhum retorno de chamada for fornecido, todas as entradas da coleção que são equivalentes a  false serão removidas.

<?php

// web.php

Route::get('/', function () {
    $collection = collect([0, 1, 2, 3, 4, 5]);

    $filtered = $collection->filter();

    dd($filtered->all());
});

No código acima, a  entrada 0  será removida porque foi considerada um 0 booleano que é  falso.

Pesquise tambem sobre PHP array_filter()

Share
About Author

Renato

Developer

Add a Comment
Comments 0 Comments

No comments yet! Be the first to comment