uql
1.2.0
該庫利用URL查詢參數並生成數據庫查詢。
目前,它提供了以下集成:
計劃:
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]}} | (1,2)中的ID |
| 寧 | ? q = {“ id”:{“ $ nin”:[1,2]}} | 其中ID不在(1,2)中 |
| 喜歡 | ? | 諸如“約翰%”之類的名字 |
| 無效的 | ? q = {“ $ null”:“ name”} | 名稱為null |
| 不是零 | ? q = {“ $ nnull”:“ name”} | 名稱不是空的 |
| 和 | ? | id = 1 and 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查詢 | 選擇 |
|---|---|
| ? | 其中“ id”! ='1'和(“ id” ='2'或“ id” ='3')和(“ id” ='2'和“ name” ='test') |
| ? | 其中((“ id” ='1'和“ name” ='test')或“ id”!='1'或“ name” ='test') |
| 手術 | URL查詢 | 選擇 |
|---|---|---|
| 種類 | ? q = {“ id”:1}&h = {“ $ sort”:“ name”} | id = 1按名稱asc,價格desc |
| 種類 | ? | id = 1按名稱asc,價格desc |
| 限制 | ? q = {}&h = {“ $ limit”:10} | 從表限制10中選擇 * |
| 限制 +跳過 | ? q = {}&h = {“ $ limit”:10,“ $ skip”:20} | 選擇 *從表限制10跳過10 |