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
WHERE
clause grouped usingAND
. - Empty values are discarded.
- Values begning with
%
will useLIKE
comparison. - Values endding with
%
will useLIKE
comparison. - 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.