PHPackages                             paulo-leo/laravel-qjs - 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. [Utility &amp; Helpers](/categories/utility)
4. /
5. paulo-leo/laravel-qjs

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

paulo-leo/laravel-qjs
=====================

Descrição do seu pacote

121PHP

Since Apr 25Pushed 2y ago1 watchersCompare

[ Source](https://github.com/paulo-leo/laravel-qjs)[ Packagist](https://packagist.org/packages/paulo-leo/laravel-qjs)[ RSS](/packages/paulo-leo-laravel-qjs/feed)WikiDiscussions main Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Laravel QJS (Query JSON for SQL)
================================

[](#laravel-qjs-query-json-for-sql)

O Laravel QJS é um pacote PHP desenvolvido especificamente para aplicações Laravel, mas também é compatível com o Lumen. Ele oferece uma maneira eficiente e intuitiva de gerar relatórios usando uma linguagem baseada na estrutura JSON.

Introdução ao QJS: Uma Linguagem Declarativa para Geração Dinâmica de Relatórios
--------------------------------------------------------------------------------

[](#introdução-ao-qjs-uma-linguagem-declarativa-para-geração-dinâmica-de-relatórios)

O QJS é uma linguagem declarativa que pode ser escrita tanto em JSON quanto em arrays associativos do PHP. Desenvolvida por Paulo Leonardo Da S. Cassimiro, sua principal finalidade é resolver o desafio recorrente de geração de relatórios. A criação de relatórios é uma tarefa altamente dinâmica, cuja complexidade varia de acordo com o cenário específico. A proposta por trás dessa linguagem é permitir o armazenamento de instruções para a renderização de relatórios em arquivos de texto ou campos de banco de dados, podendo ser chamados em tempo real.

A ideia de construir o QJS usando o formato JSON foi inspirada no uso de estados de componentes em aplicações reativas, como React, Vue, Angular, entre outras. Isso possibilita a construção de relatórios em tempo real, dependendo da implementação. As instruções da linguagem seguem as mesmas regras do SQL comum, com a diferença de que as declarações não precisam seguir uma ordem específica, sendo o único campo obrigatório o from, enquanto os demais refinam o seu relatório.

Em resumo, o QJS pode ser considerado um protocolo para a criação de relatórios baseados em estados JSON.

Uma consulta QJS pode ser interpretada da seguinte maneira:
-----------------------------------------------------------

[](#uma-consulta-qjs-pode-ser-interpretada-da-seguinte-maneira)

```
      {
	"from":"categories",
	"where":"created_at,between,$nowsub:30;$now"
      }
```

Nesta consulta, especificamos que um relatório será gerado para todas as categorias (from) do sistema, onde (where) as categorias foram criadas (created\_at) dentro do intervalo (between) dos últimos 30 dias até a data atual ($nowsub:30;$now). Os placeholders $nowsub e $now são métodos avançados de data que podem ser utilizados em qualquer filtro, exceto nos operadores in e !in. O prefixo $ indica o uso de um comando interno.

Recursos
--------

[](#recursos)

- **Sintaxe Simples:** A estrutura de uma consulta QJS é simples e não requer uma ordem específica para os comandos.
- **Flexibilidade:** O comando "from" é o único obrigatório para gerar um relatório básico, mas é possível realizar relacionamentos entre entidades do esquema do banco de dados, executar agregações e subconsultas nas linhas e utilizar comandos avançados de datas nos filtros dos relatórios.
- **Facilidade de Uso:** A estrutura do QJS pode ser facilmente salva em uma string e executada diretamente a partir de uma tabela de relatórios.
- **Simplificação de Relatórios Complexos:** Uma das maiores motivações para o desenvolvimento deste recurso é a simplificação de relatórios complexos, tornando o processo mais ágil e eficiente.
- **Conversão Nativa:** O QJS oferece suporte nativo para a conversão dos relatórios gerados em tabelas HTML e XLS.

Instalação via composer:
------------------------

[](#instalação-via-composer)

```
    composer require paulo-leo/laravel-qjs:dev-main
```

Exemplo de uso
--------------

[](#exemplo-de-uso)

```
