uql
1.2.0
Perpustakaan ini menggunakan parameter kueri URL dan menghasilkan kueri DB.
Pada saat ini, ini memberikan integrasi dengan:
Berencana:
composer require los/uqlPembangun menggunakan parameter kueri 'Q' untuk kueri dan 'h' untuk petunjuk (sortir, pesanan, batas, dll). Anda dapat mengubahnya di konstruktor:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );Instance pilih yang dikembalikan oleh metode pembangun adalah klon dari yang ditularkan dalam konstruktor.
Melewati permintaan secara langsung:
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 ();
}atau secara manual melewati parameter:
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 ();
}| operasi | kueri url | memilih |
|---|---|---|
| setara | ? q = {"id": 1} | Dimana id = 1 |
| bukan | ? q = {"id": {"$ not": 1}} | Dimana id! = 1 |
| di dalam | ? q = {"id": {"$ in": [1,2]}} | Dimana id dalam (1, 2) |
| nin | ? q = {"id": {"$ nin": [1,2]}} | Dimana id tidak dalam (1, 2) |
| menyukai | ? q = {"name": {"$ like": "John%"}} | Dimana nama seperti 'John%' |
| batal | ? q = {"$ null": "name"} | Dimana Nama Null |
| bukan nol | ? q = {"$ nnull": "name"} | Dimana nama tidak nol |
| Dan | ? q = {"$ and": [{"id": 1}, {"name": "John"}]} | Dimana id = 1 dan name = 'John' |
| atau | ? q = {"$ atau": [{"id": 1}, {"name": "John"}]} | Dimana id = 1 atau name = 'John' |
| lebih besar | ? q = {"harga": {"$ gt": 100}} | Dimana harga> 100 |
| lebih besar atau sama | ? q = {"harga": {"$ gte": 100}} | Dimana harga> = 100 |
| lebih sedikit | ? q = {"harga": {"$ lt": 100}} | Dimana harga <100 |
| kurang atau sama | ? q = {"harga": {"$ lte": 100}} | Dimana harga <= 100 |
| di antara | ? q = {"harga": {"$ bt": [100.200]}} | Dimana harga> = 100 dan harga <= 200 |
Anda dapat mencampur dan bersarang pertanyaan:
| kueri url | memilih |
|---|---|
| ? q = {"id": {"$ nott": 1}, "$ atau": [{"id": 2}, {"id": "3"}], "$ and": [{"id": 2}, {"name": "test"}]} | Di mana "id"! = '1' dan ("id" = '2' atau "id" = '3') dan ("id" = '2' dan "name" = 'test') |
| ? q = {"$ atau": [{"$ and": [{"id": 1}, {"name": "test"}]}, {"id": {"$ not": 1}}, {"name": "test"}]} | Where (("id" = '1' dan "name" = 'test') atau "id"! = '1' atau "name" = 'test') |
| operasi | kueri url | memilih |
|---|---|---|
| menyortir | ? q = {"id": 1} & h = {"$ sort": "name"} | Dimana id = 1 pesanan dengan nama asc, harga desc |
| menyortir | ? q = {"id": 1} & h = {"$ sort": {"name": "asc", "price":-1}} | Dimana id = 1 pesanan dengan nama asc, harga desc |
| membatasi | ? q = {} & h = {"$ limit": 10} | Pilih * dari batas tabel 10 |
| batas + lewati | ? q = {} & h = {"$ limit": 10, "$ skip": 20} | Pilih * dari Batas Tabel 10 Lewati 10 |