# Poco::ActiveRecord

# template < typename ActRec >

# class Query

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

## Description

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

## Constructors

### Query

Query() = delete;

### Query

explicit Query(
Context::Ptr pContext
);

### Query

Query(
const Query & param6
) = delete;

## Destructor

### ~Query

~Query() = default;

## Member Functions

### bind

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

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

Execute the query and return a vector with the results.

### filter

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

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

### limit

Query & limit(
std::size_t limit
);

Specify the maximum number of rows to return for paging.

### offset

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

Query & orderBy(
const std::string & order
);

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

### reset

void reset();

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

### totalResults

std::size_t totalResults() const;

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

### where

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

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

### select

void select();