uql
1.2.0
Esta biblioteca utiliza parámetros de consulta de URL y genera consultas DB.
En este momento, proporciona integración con:
Planificado:
composer require los/uqlEl constructor usa los parámetros de consulta 'Q' para las consultas y 'H' para sugerencia (ordenar, orden, límites, etc.). Puedes cambiarlos en el constructor:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );La instancia de selección devuelta por los métodos del constructor es un clon del que se pasa en el constructor.
Pasando la solicitud directamente:
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 ();
}o pasar manualmente los 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 ();
}| operación | consulta de url | seleccionar |
|---|---|---|
| igual | ? Q = {"id": 1} | Donde id = 1 |
| no | ? q = {"id": {"$ no": 1}} | Donde id! = 1 |
| en | ? q = {"id": {"$ in": [1,2]}} | Donde id en (1, 2) |
| Nin | ? q = {"id": {"$ nin": [1,2]}} | Donde no en (1, 2) |
| como | ? q = {"nombre": {"$ me gusta": "John%"}} | Donde nombre como 'John%' |
| nulo | ? q = {"$ null": "nombre"} | Donde el nombre es nulo |
| no nulo | ? Q = {"$ nnull": "nombre"} | Donde el nombre no es nulo |
| y | ? q = {"$ y": [{"id": 1}, {"nombre": "John"}]} | Donde id = 1 y nombre = 'John' |
| o | ? q = {"$ o": [{"id": 1}, {"nombre": "John"}]} | Donde id = 1 o nombre = 'John' |
| mayor que | ? q = {"precio": {"$ gt": 100}} | Donde precio> 100 |
| mayor o igual | ? q = {"precio": {"$ gte": 100}} | Donde precio> = 100 |
| menos | ? q = {"precio": {"$ lt": 100}} | Donde precio <100 |
| Menos o igual | ? q = {"precio": {"$ lte": 100}} | Donde precio <= 100 |
| entre | ? q = {"precio": {"$ bt": [100,200]}} | Donde precio> = 100 y precio <= 200 |
Puedes mezclar y anidar consultas:
| consulta de url | seleccionar |
|---|---|
| ? q = {"id": {"$ no": 1}, "$ o": [{"id": 2}, {"id": "3"}], "$ y": [{"id": 2}, {"nombre": "prueba"]}}}}}} | Donde "id"! = '1' y ("id" = '2' o "id" = '3') y ("id" = '2' y "nombre" = 'prueba') |
| ? q = {"$ o": [{"$ y": [{"id": 1}, {"nombre": "prueba"}]}, {"id": {"$ no": 1}}, {"nombre": "prueba"}]}}}}} | Donde (("id" = '1' y "nombre" = 'prueba') o "id"! = '1' o "nombre" = 'prueba')) |
| operación | consulta de url | seleccionar |
|---|---|---|
| clasificar | ? q = {"id": 1} & h = {"$ sort": "nombre"} | Donde id = 1 orden por nombre ASC, Price Desc |
| clasificar | ? q = {"id": 1} & h = {"$ sort": {"nombre": "asc", "precio":-1}} | Donde id = 1 orden por nombre ASC, Price Desc |
| límite | ? Q = {} & h = {"$ Limit": 10} | Seleccionar * del límite de tabla 10 |
| límite + omitir | ? Q = {} & h = {"$ Limit": 10, "$ Skip": 20} | Seleccione * del límite de tabla 10 omita 10 |