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 |