uql
1.2.0
ห้องสมุดนี้ใช้พารามิเตอร์ URL แบบสอบถามและสร้างแบบสอบถาม DB
ในขณะนี้มันให้การบูรณาการกับ:
วางแผน:
composer require los/uqlตัวสร้างใช้พารามิเตอร์แบบสอบถาม 'Q' สำหรับการสืบค้นและ 'H' สำหรับคำใบ้ (เรียงลำดับลำดับขีด จำกัด ฯลฯ ) คุณสามารถเปลี่ยนสิ่งเหล่านี้ในตัวสร้าง:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );อินสแตนซ์ที่เลือกที่ส่งคืนโดยวิธีการสร้างเป็นโคลนจากที่ผ่านในตัวสร้าง
ผ่านคำขอโดยตรง:
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 ();
}หรือผ่านพารามิเตอร์ด้วยตนเอง:
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 ();
}| การดำเนินการ | คำถาม URL | เลือก |
|---|---|---|
| เท่ากัน | ? q = {"id": 1} | โดยที่ id = 1 |
| ไม่ | ? q = {"id": {"$ not": 1}} | id ที่ไหน! = 1 |
| ใน | ? q = {"id": {"$ in": [1,2]}} | โดยที่ ID ใน (1, 2) |
| NIN | ? q = {"id": {"$ nin": [1,2]}} | โดยที่ ID ไม่อยู่ใน (1, 2) |
| ชอบ | ? q = {"ชื่อ": {"$ like": "john%"}}} | ที่ชื่อเช่น 'John%' |
| โมฆะ | ? q = {"$ null": "ชื่อ"} | ชื่ออยู่ที่ไหน null |
| ไม่เป็นโมฆะ | ? q = {"$ nnull": "ชื่อ"} | ที่ชื่อไม่เป็นโมฆะ |
| และ | ? q = {"$ และ": [{"id": 1}, {"ชื่อ": "John"}]} | โดยที่ id = 1 และ name = 'John' |
| หรือ | ? q = {"$ หรือ": [{"id": 1}, {"name": "John"}]} | โดยที่ id = 1 หรือ name = 'John' |
| ยิ่งใหญ่ | ? q = {"ราคา": {"$ gt": 100}} | ราคา> 100 |
| มากขึ้นหรือเท่าเทียมกัน | ? q = {"ราคา": {"$ gte": 100}} | โดยที่ราคา> = 100 |
| น้อย | ? q = {"ราคา": {"$ lt": 100}} | ราคา <100 |
| น้อยลงหรือเท่ากัน | ? q = {"ราคา": {"$ lte": 100}} | ราคา <= 100 |
| ระหว่าง | ? q = {"ราคา": {"$ bt": [100,200]}} | โดยที่ราคา> = 100 และราคา <= 200 |
คุณสามารถผสมและทำรังแบบสอบถาม:
| คำถาม URL | เลือก |
|---|---|
| ? q = {"id": {"$ not": 1}, "$ หรือ": [{"id": 2}, {"id": "3"}], "$ และ": [{"id": 2}, {"ชื่อ": "ทดสอบ"}]}}} | โดยที่ "id"! = '1' และ ("id" = '2' หรือ "id" = '3') และ ("id" = '2' และ "ชื่อ" = 'ทดสอบ') |
| ? q = {"$ หรือ": [{"$ และ": [{"id": 1}, {"ชื่อ": "ทดสอบ"}]}, {"id": {"$ not": 1}}, {"ชื่อ": "ทดสอบ"}]}} | โดยที่ (("id" = '1' และ "name" = 'test') หรือ "id"! = '1' หรือ "name" = 'test') |
| การดำเนินการ | คำถาม URL | เลือก |
|---|---|---|
| เรียงลำดับ | ? q = {"id": 1} & h = {"$ sort": "name"} | โดยที่ id = 1 สั่งซื้อตามชื่อ asc ราคา desc |
| เรียงลำดับ | ? q = {"id": 1} & h = {"$ sort": {"name": "asc", "price":-1}} | โดยที่ id = 1 สั่งซื้อตามชื่อ asc ราคา desc |
| จำกัด | ? q = {} & h = {"$ limit": 10} | เลือก * จาก Table Limit 10 |
| จำกัด + ข้าม | ? q = {} & h = {"$ limit": 10, "$ skip": 20} | เลือก * จาก Table Limit 10 ข้าม 10 |