PHPackages                             moiseskalebe/laravel-lazy-filters - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. moiseskalebe/laravel-lazy-filters

ActiveLibrary

moiseskalebe/laravel-lazy-filters
=================================

Traits para facilitar a criação de filtros em listagens com o Eloquent/Laravel

v1.0.0(2y ago)034↑200%GPL-3.0-or-laterPHPPHP &gt;=8.1

Since Nov 13Pushed 2y ago1 watchersCompare

[ Source](https://github.com/MoisesK/laravel-lazy-filters)[ Packagist](https://packagist.org/packages/moiseskalebe/laravel-lazy-filters)[ RSS](/packages/moiseskalebe-laravel-lazy-filters/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (2)Versions (2)Used By (0)

Laravel Lazy Filters
====================

[](#laravel-lazy-filters)

Introdução
----------

[](#introdução)

Bem-vindo ao Laravel Lazy Filters, a solução que simplifica a experiência de Filtragem, Sorteamento, Busca e Paginação de registros para desenvolvedores que utilizam o poderoso Framework Laravel. Este aplicativo nasceu da necessidade de aprimorar a visualização e interação com dados, proporcionando uma abordagem inovadora para simplificar o processo de filtragem e exibição de registros de maneira eficiente.

Índice
------

[](#índice)

1. [Introdução](#introdu%C3%A7%C3%A3o)
2. [Índice](#indice)
3. [Requisitos](#requisitos)
4. [Instalação](#instala%C3%A7%C3%A3o)
5. [Utilização](#utiliza%C3%A7%C3%A3o)
6. [Parâmetrização](#par%C3%A2metriza%C3%A7%C3%A3o)
7. [Filtragem](#searcheable)
8. [Paginação](#paginatable)
9. [Limitação](#limitable)
10. [Sorteamento](#Sorteable)
11. [Exemplo de Query Strings](#exemplo-de-query-strings)
12. [Veja um exemplo de aplicação](#veja-um-exemplo-de-aplica%C3%A7%C3%A3o)

Requisitos
----------

[](#requisitos)

Necessario PHP 8.0+ e Framework Laravel

Instalação
----------

[](#instalação)

#### Para realizar a instalação desta dependência basta executar o seguinte comando:

[](#para-realizar-a-instalação-desta-dependência-basta-executar-o-seguinte-comando)

```
composer require moiseskalebe/laravel-lazy-filters
```

Utilização
----------

[](#utilização)

#### Para que seja possivel a utilização deste package você precisa ter em mente algumas informações.

[](#para-que-seja-possivel-a-utilização-deste-package-você-precisa-ter-em-mente-algumas-informações)

O pacote funciona partindo do objeto Request que o Framework Laravel disponibiliza, então veja que os parâmetros precisam ser convêncionados no recebimento da API.

Para que seja possivel realizar as ações como Filtragem, Sorteamento, Busca e Paginação deve-se ter em mente os padrões abaixo:

Parâmetrização:
---------------

[](#parâmetrização)

`filter` é utilizado para filtrar os registros,

`sort` é utilizado para ordenar os resultados,

`limit` é utilizado para limitar a quantidade de resultados retornados.

Searcheable:
------------

[](#searcheable)

Esta trait disponibiliza o metodo `processSearch()` que recebe como parâmetro um `Illuminate\Database\Eloquent\Builder` e lê os filtros passados via query-string .

💡 Para utilizá-los na query : **filter\[nomeCampo\]\[operador\]**

Listagem de operadores disponiveis:

OperadorEquivalentelt&lt;gt&gt;lte&lt;=gte&gt;=eq=neq!=inINninNOT INlikeLIKEbtwBETWEENsortSORTlimitLIMITPaginatable:
------------

[](#paginatable)

Esta trait disponibiliza o metodo `buildPagination()` que recebe como parâmetro um `Illuminate\Database\Eloquent\Builder` e como segundo parametro um `int $perPage` que sinaliza a quantidade de resultados por pagina. Este metodo lê o estado atual da do Builder passado executando assim o que foi configurado como a paginação e o limit baseado no parâmetro secundario que possui 40 como default.

E possivel passar o parâmetro **`perPage`** como query-string na requisição.

ex: `?filter[name][like]=devs&perPage=100`

É possível em uma listagem ignorar a paginação passando o parâmetro `bool skipPagination`

ex: `?filter[name][like]=devs&skipPagination=1`

Apos a execução e atribuido um parâmetro `data` e um `paginationData` onde o Data tera os registros todos com parceamento em atributos primitivos e o PaginationData seriam os meta-dados sobre a Paginação.

Limitable:
----------

[](#limitable)

Esta trait disponibiliza lê a query `limit` passada na requisição e retorna apenas a quantidade de registros informados. ex: `?filter[name][like]=devs&limit=100`

Sorteable:
----------

[](#sorteable)

Esta trait disponibiliza o metodo `processSort()` que recebe como parâmetro um `Illuminate\Database\Eloquent\Builder`este metodo lê o estado atual da do Builder passado executando assim o sorteamento.

💡 Para utilizá-lo na query : **`sort`** como query-string na requisição.

ex: `?filter[name][like]=devs&sort=createdAt`

Exemplo de Query Strings:
-------------------------

[](#exemplo-de-query-strings)

Abaixo uma tabela com queries, descritivos e exemplos para cada situação:

QueryDescriçãoExemplofilter\[nomeCampo\] = valorRetorna o valor idêntico ao consultado.nome = “Junior”filter\[nome\]\[like\] = valorRetorna os registos que possuem no campo nome o valor ou parte do valor passado.nome LIKE “%valor%”filter\[nome\]\[in\] = A,B,CRetorna todos os registros que possuem A,B ou C equivalentes.nome IN (A,B,C)filter\[nome\]\[lt\] = 20Retorna os registros menor que 20. (Less Than)nome &lt; 20filter\[nome\]\[lte\] = 15Retorna os registros menores que e iguais á 15. (Less Than Equal)nome ≤ 15filter\[nome\]\[gt\] = 10retorna os registros maiores que 10. (Greater Than)nome &gt; 10filter\[nome\]\[gte\] = 12retorna os registros maiores que e iguais a 12. (Greater Than Equals)nome ≥ 12filter\[nome\]\[btw\] = 2022-12-02, 2023-01-05retorna os registros que estiverem entre um determinado intervalo, nesse exemplo 2022-12-02 e 2022-01-05.nome BETWEEN 2022-12-02 AND 2023-01-05sort = createdAt, -numbersOrdena o retorno por createdAt em ascendente e numbers em descendente. Para resultados de forma descendente adicionar o - (hífen) antes do campolimit = 10Limita a quantidade de resultados.#### Veja um exemplo de aplicação:

[](#veja-um-exemplo-de-aplicação)

```
