Download the PHP package gajus/klaus without Composer
On this page you can find all versions of the php package gajus/klaus. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Package klaus
Short Description SQL clause builder.
License BSD-3-Clause
Homepage https://github.com/gajus/klaus
Informations about the package klaus
Klaus
User input interpreter for constructing SQL WHERE clause. Klaus can build complex WHERE clauses of variable depth and with different grouping conditions.
Documentation
Preparing Query
Raw query consists of the grouping operator definition (AND or OR) and condition. There are two types of conditions:
Comparison Condition
Comparison consists of user input name, value and the comparison operator, e.g.
Group Condition
The condition itself can define new group, e.g.
A complete query must include at least one group and at least one comparison operator.
Mapping Using Input
Mapping is used to restrict columns that can be included in the query, as well as to provide support for columns that depend on alias or even more complicated constructs.
In the above example, you need to define relation between the parameter name that you are using in the query and the column name in the SQL query, e.g.
Buildng the WHERE Clause
The preceeding examples explain how to prepare data for the Where constructor.
We are going to use the SQL from the previous example to construct a prepared statement and execute it.
The WHERE clause itself is generated using getClause method:
If query does not produce a condition, then getClause will always return 1=1, e.g.
In the above example, $sql is:
To execute the query, you have to build PDOStatement, e.g.
and execute it using the input data:
In the above example, $input is equal to:
Input Template
For basic search you can use Gajus\Klaus\Where::queryTemplate.
- Basic query template takes name => value pairs and converts them to
WHEREclause grouped usingAND. - Empty values are discarded.
- Values begning with
%will useLIKEcomparison. - Values endding with
%will useLIKEcomparison. - Values that do not contain
%or where%is not at the begining or end of the query will use=comparison.
Example
Alternatives
elasticsearch (ES) provides an API with a query DSL. The only downside of using ES is that it requires data dupliction.



