PHPackages                             gsferro/filtereasy - 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. [Database &amp; ORM](/categories/database)
4. /
5. gsferro/filtereasy

ActiveLibrary[Database &amp; ORM](/categories/database)

gsferro/filtereasy
==================

Forma easy e generica de fazer filtros na model

v1.5.1(1y ago)0814↓50%11MITPHP

Since Aug 28Pushed 1y ago1 watchersCompare

[ Source](https://github.com/gsferro/laravel-filtereasy)[ Packagist](https://packagist.org/packages/gsferro/filtereasy)[ RSS](/packages/gsferro-filtereasy/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (5)DependenciesVersions (8)Used By (1)

 [![FilterEasy](logo.png)](logo.png)

 [![Latest Version](https://camo.githubusercontent.com/59d1bca335b1a16e4af5904cc4d039ed076216e0d4377eb8b78fa82ff2245e37/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f6773666572726f2f66696c74657265617379)](https://packagist.org/packages/gsferro/filtereasy) [![Total Downloads](https://camo.githubusercontent.com/40e845359bd1d194f33a235f7bfc4c3ebc88ae5ebb85ec1a41ab4a50b1312acf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f6773666572726f2f66696c74657265617379)](https://packagist.org/packages/gsferro/filtereasy) [![License](https://camo.githubusercontent.com/78682f80fd5e4e0049ad566360cd2fd36667b5ed1fb5c9e9341b35d05cb932da/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f6773666572726f2f66696c74657265617379)](https://packagist.org/packages/gsferro/filtereasy)

---

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

[](#introdução)

O FilterEasy é um pacote PHP que permite aplicar filtros em consultas de banco de dados de forma fácil e eficiente. Com ele, você pode criar consultas mais complexas e personalizadas, sem precisar escrever código SQL extenso.

Instalação

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

[](#instalação)

```
 composer require gsferro/filtereasy
```

Implementação:
--------------

[](#implementação)

1. Na Model adicione a trait do pacote:

    ```
    Use FilterEasy;
    ```
2. O pacote se utiliza do padrão `Mass Assignment` do Laravel para tratar os filtros, mas somente os campos do array `$fillable` são considerados, com exceção dos relacionamentos, que é explicado logo abaixo.
3. Por default, todos os itens são tratados com a cláusula `where`.
4. Caso seja enviado um valor contendo um `array`, sera utilizado o`whereIn`.

    - Para `array`, coloque no name um `[]`, exemplo: ```
        permission_id[]
        ```
5. Para verificações utilizando o operador `like` ou uma verificação que force um `bool`, é necessário inicializar os seguintes atributos, respectivamente:

    ```
    /*
    |---------------------------------------------------
    | FilterEasy
    |---------------------------------------------------
    */
    private array $likeFilterFields = [
        // coloque os campos para like
    ];

    private array $boolFilterFields = [
        // coloque os campos bool
    ];
    ```
6. Busca com **Datas e Hora**:

    1. Para fazer verificação de periodos de data, usar os `sufixo` a seguir, não precisam ser usados juntos:

        1. `:start`
        2. `:end`

        - Exemplos:
        - Com o `:start` será implementado `where('created_at', '>=', $value)`> created\_at:start
        - Com o `:end` será implementado `where('updated_at', '',
          ]
        ];
        ```

        - Nesse caso, ele verificara o valor enviado na posição `client` dentro do `request` e ira setar na query com o `orWhere`;
        - Ex: Caso tenha enviado um request assim: `client=123`, o `sql` gerado sera: ```
             select * from users where (name like '123%' or id = 123 or age > 123)
            ```
10. Para implementar uma consulta utilizando `whereNull` ou `whereNotNull`, no conceito de `exists` dados na tabela, basta inicializar o atributo `$nullableFilterFields` e passar o valor `boolean`, sendo `true|1` para `whereNotNull` e `false|0` para `whereNull`:

    - Inicialize o atributo `$nullableFilterFields`: ```
        /*
        |---------------------------------------------------
        | FilterEasy
        |---------------------------------------------------
        */
        private array $nullableFilterFields = [
        // coloque os campos que serão verificados se estão null
        ];
        ```
    - Exemplo: `updated_at=1` e `remember_token=false`

    ```
    select * from users where updated_at is not null and remember_token is null
    ```

Recursos Adicionais
-------------------

[](#recursos-adicionais)

1. Você não precisa sanitizar os dados antes de enviar, o pacote limpa os campos que vierem em branco (`''`) e `null`, mas aceita o `0` como um valor **válido**, pois pode ser usado como um operador `boleano`
2. Use o `filterEasyRequest()`, como `scope`, para pegar todos os dados do request sem precisar passá-los por parâmetro. Pois ele chamara o `filterEasy` pasando a facade `request()->all()` como parâmetro
3. Se você utilizar o pacote `prettus/l5-repository` ou qualquer outro para `Repository`, recomendo criar a classe `FilterEasyCriteria` já implementando o `filterEasyRequest()`
    1. Implementando assim:

    ```
