uql
1.2.0
Esta biblioteca utiliza parâmetros de consulta de URL e gera consultas de banco de dados.
Neste momento, fornece integração com:
Planejado:
composer require los/uqlO construtor usa os parâmetros de consulta 'q' para as consultas e 'h' para dica (classificar, ordenar, limites, etc.). Você pode alterar isso no construtor:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );A instância de seleção retornada pelos métodos do construtor é um clone do que passou no construtor.
Passando a solicitação diretamente:
public function handle ( ServerRequestInterface $ request ): ResponseInterface
{
$ select = new Laminas Db Select ( ' table ' );
$ select = ( new ZendDbBuilder ( $ select ))-> fromRequest ( $ request );
$ statement = $ sql -> prepareStatementForSqlObject ( $ select );
$ results = $ statement -> execute ();
}ou passando manualmente nos parâmetros:
public function handle ( ServerRequestInterface $ request ): ResponseInterface
{
$ queryParams = $ request -> getQueryParams ();
$ query = $ queryParams [ ' q ' ] ?? [];
$ hint = $ queryParams [ ' h ' ] ?? [];
$ select = new Laminas Db Select ( ' table ' );
$ select = ( new ZendDbBuilder ( $ select ))-> fromParams ( $ query , $ hint );
$ statement = $ sql -> prepareStatementForSqlObject ( $ select );
$ results = $ statement -> execute ();
}| operação | Consulta de URL | Selecione |
|---|---|---|
| igual | ? Q = {"id": 1} | Onde id = 1 |
| não | ? q = {"id": {"$ não": 1}} | Onde id! = 1 |
| em | ? q = {"id": {"$ in": [1,2]}} | Onde id em (1, 2) |
| Nin | ? q = {"id": {"$ nin": [1,2]}} | Onde não é em (1, 2) |
| como | ? P = {"Nome": {"$ como": "John%"}} | Onde nome como 'John%' |
| nulo | ? P = {"$ null": "Nome"} | Onde o nome é nulo |
| não nulo | ? Q = {"$ nnull": "Nome"} | Onde o nome não é nulo |
| e | ? q = {"$ e": [{"id": 1}, {"name": "John"}]} | Onde id = 1 e nome = 'John' |
| ou | ? q = {"$ ou": [{"id": 1}, {"name": "John"}]} | Onde id = 1 ou nome = 'John' |
| maior | ? Q = {"Price": {"$ gt": 100}} | Onde preço> 100 |
| maior ou igual | ? Q = {"Price": {"$ GTE": 100}} | Onde preço> = 100 |
| menos | ? Q = {"Price": {"$ lt": 100}} | Onde preço <100 |
| menos ou igual | ? Q = {"Price": {"$ lte": 100}} | Onde preço <= 100 |
| entre | ? P = {"Price": {"$ BT": [100.200]}} | Onde preço> = 100 e preço <= 200 |
Você pode misturar e nidificar consultas:
| Consulta de URL | Selecione |
|---|---|
| ? q = {"id": {"$ não": 1}, "$ ou": [{"id": 2}, {"id": "3"}], "$ e": [{"id": 2}, {"name": "test"}}}} | Onde "id"! = '1' e ("id" = '2' ou "id" = '3') e ("id" = '2' e "nome" = 'teste') |
| ? q = {"$ ou": [{"$ e": [{"id": 1}, {"name": "test"}]}, {"id": {"$ não": 1}}, {"name": "test"}}} | Onde (("id" = '1' e "nome" = 'teste') ou "id"! = '1' ou "nome" = 'teste') |
| operação | Consulta de URL | Selecione |
|---|---|---|
| organizar | ? q = {"id": 1} & h = {"$ sort": "name"} | Onde ID = 1 Ordem pelo nome ASC, Price Desc |
| organizar | ? q = {"id": 1} & h = {"$ sort": {"name": "ASC", "Price":-1}} | Onde ID = 1 Ordem pelo nome ASC, Price Desc |
| limite | ? q = {} & h = {"$ limite": 10} | Selecione * da tabela Limite 10 |
| limite + pular | ? q = {} & h = {"$ limite": 10, "$ skip": 20} | Selecione * da tabela Limite 10 Pule 10 |