los/uql

PHP library to transform url query into db partial queries

Fund package maintenance!
Lansoweb

1.2.0 2023-09-19 17:34 UTC

This package is auto-updated.

Last update: 2024-10-19 19:48:24 UTC


README

Build Status Coverage Status Latest Stable Version Total Downloads License

This library utilizes url query parameters and generates db queries.

At this moment, it provides integration with:

Planned:

Installing

 composer require los/uql

Usage

The builder uses the query parameters 'q' for the queries and 'h' for hint (sort, order, limits, etc). You can change these in the constructor:

$builder = new ZendDbBuilder($select, 'query', 'hint');

The Select instance returned by the builder methods is a clone from the one passed in the constructor.

Zend DB

Passing the request directly:

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();
}

or manually passing the parameters:

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();
}

Examples:

You can mix and nest queries:

Hint examples: