template < typename ActRec >

class Query

Library: ActiveRecord
Package: ActiveRecord
Header: Poco/ActiveRecord/Query.h


A Query is used to retrieve ActiveRecord objects from a table.

As the name implies, Query supports selection of database rows based on a WHERE clause (see where()).

Furthermore, results can be sorted (see orderBy()) and filtered based on a lambda expression (see filter()).

Optional result paging is controlled by offset() and limit(). The total number of results is available via totalResults().

Member Summary

Member Functions: bind, execute, filter, fixPlaceholders, limit, offset, operator =, orderBy, reset, select, totalResults, where



Query() = delete;

Query inline

explicit Query(
    Context::Ptr pContext


    const Query & param6
) = delete;



~Query() = default;

Member Functions

bind inline

template < typename T > Query & bind(
    const T & value

Bind a value to a placeholder in the where() clause.

For each placeholder (?) in the where() clause, a value must be bound with bind() before the query can be executed.

execute inline

std::vector < typename ActRec::Ptr > execute();

Execute the query and return a vector with the results.

filter inline

Query & filter(
    const std::function < bool (const ActRec &)> & fn

Specify a lambda expression for filtering results.

The lamda takes a const reference to the ActiveRecord (template argument) as parameter and must return a bool. If the lambda returns true, the respective ActiveRecord is included in the query result.

filter inline

Query & filter(
    std::function < bool (const ActRec &)> && fn

limit inline

Query & limit(
    std::size_t limit

Specify the maximum number of rows to return for paging.

offset inline

Query & offset(
    std::size_t offset

Specify the index or offset of the first row to return for paging.

operator =

Query & operator = (
    const Query & param7
) = delete;

orderBy inline

Query & orderBy(
    const std::string & order

Specify a column name and optional direction (ASC, DESC) to order the result by.

reset inline

void reset();

Resets the query so that it can be executed again, with potentially different parameters.

totalResults inline

std::size_t totalResults() const;

In case of a paged query, returns the total number of results that would be returned without paging.

where inline

Query & where(
    const std::string & clause

Specify a WHERE clause (without the WHERE keyword) to select only rows matching the clause.

Placeholders (?) can be used in the clause. For each placeholder, an actual value must be bound before the query is executed (see bind()).

fixPlaceholders protected inline

std::string fixPlaceholders(
    const std::string & clause

select protected inline

void select();