uql
1.2.0
Diese Bibliothek verwendet URL -Abfrageparameter und generiert DB -Abfragen.
In diesem Moment bietet es eine Integration mit:
Geplant:
composer require los/uqlDer Bauherr verwendet die Abfrageparameter 'Q' für die Abfragen und 'H' für Hinweise (sortieren, Ordnung, Grenzen usw.). Sie können diese im Konstruktor ändern:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );Die von den Builder -Methoden zurückgegebene Auswahlinstanz ist ein Klon aus dem im Konstruktor übergebenen.
Die Anfrage direkt bestehen:
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 ();
}oder manuell die Parameter übergeben:
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 ();
}| Betrieb | URL -Abfrage | wählen |
|---|---|---|
| gleich | q = {"id": 1} | Wobei id = 1 |
| nicht | q = {"id": {"$ nicht": 1}} | Wo id! = 1 |
| In | q = {"id": {"$ in": [1,2]}} | Wo id in (1, 2) |
| Nin | q = {"id": {"$ nin": [1,2]}} | Wobei ich nicht in (1, 2) id id id id id id id Id |
| wie | q = {"name": {"$ like": "John%"}} | Wo Name 'John%' wie |
| NULL | q = {"$ null": "name"} | Wo Name null ist |
| nicht null | q = {"$ nnull": "name"} | Wo der Name nicht null ist |
| Und | q = {"$ und": [{"id": 1}, {"Name": "John"}]} | Wobei id = 1 und name = 'John' ' |
| oder | q = {"$ oder": [{"id": 1}, {"name": "John"}]} | Wobei id = 1 oder name = 'John' ' |
| größer | q = {"preis": {"$ gt": 100}} | Wo Preis> 100 |
| größer oder gleich | q = {"preis": {"$ gte": 100}} | Wo Preis> = 100 |
| weniger | q = {"preis": {"$ lt": 100}} | Wo Preis <100 |
| weniger oder gleich | q = {"preis": {"$ lte": 100}} | Wo Preis <= 100 |
| zwischen | q = {"preis": {"$ bt": [100.200]}} | Wobei Preis> = 100 und Preis <= 200 |
Sie können Abfragen mischen und nisten:
| URL -Abfrage | wählen |
|---|---|
| ? | Wobei "id"! = '1' und ("id" = '2' oder "id" = '3') und ("id" = '2' und "Name" = 'Test') |
| ? | WO (("id" = '1' und "name" = 'test') oder "id"! = '1' oder "name" = 'test') |
| Betrieb | URL -Abfrage | wählen |
|---|---|---|
| Sortieren | q = {"id": 1} & h = {"$ sort": "name"} | Wobei ID = 1 Bestellung mit Namen ASC, Preis Desc |
| Sortieren | q = {"id": 1} & h = {"$ sort": {"name": "asc", "preis":-1}} | Wobei ID = 1 Bestellung mit Namen ASC, Preis Desc |
| Limit | q = {} & h = {"$ limit": 10} | Wählen Sie * aus Tabellenlimit 10 |
| Limit + überspringen | q = {} & h = {"$ limit": 10, "$ überspringen": 20} | Wählen Sie * aus Tabellenlimit 10 überspringen 10 |