uql
1.2.0
Эта библиотека использует параметры запроса URL и генерирует запросы DB.
В настоящее время он обеспечивает интеграцию с:
Запланировано:
composer require los/uqlСтроитель использует параметры запроса «Q» для запросов и «H» для подсказки (сортировка, порядок, ограничения и т. Д.). Вы можете изменить их в конструкторе:
$ builder = new ZendDbBuilder ( $ select , ' query ' , ' hint ' );Экземпляр SELECT, возвращаемый методами застройщика, является клоном из того, что он прошел в конструкторе.
Прямо передавая запрос:
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) |
| нин | ? q = {"id": {"$ nin": [1,2]}} | Где идентификатор не в (1, 2) |
| нравиться | ? q = {"name": {"$ like": "John%"}} | Где имя как «Джон%» |
| нулевой | ? q = {"$ null": "name"} | Где имя ноль |
| не нулевой | ? q = {"$ nnull": "name"} | Где имя не нулевое |
| и | ? q = {"$ и": [{"id": 1}, {"name": "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 -запрос | выбирать |
|---|---|
| ? | Где "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"} | Где идентификатор = 1 заказ по имени ASC, Price Desc |
| сортировка | ? q = {"id": 1} & h = {"$ sort": {"name": "asc", "цена":-1}} | Где идентификатор = 1 заказ по имени ASC, Price Desc |
| предел | ? Q = {} & h = {"$ Limit": 10} | Выберите * из ограничения таблицы 10 |
| Предел + Skip | ? Q = {} & h = {"$ Limit": 10, "$ Skip": 20} | Выберите * Из ограничения таблицы 10 пропустить 10 |