netzmacht / contao-query-builder
Contao query builder based on Aura/SQL_Query
Installs: 41
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 0
Type:contao-module
Requires
- php: ~5.4|~7.0
- aura/sqlquery: ~2
- contao/core: >=3.2,<3.6-dev
Requires (Dev)
This package is auto-updated.
Last update: 2022-02-01 12:54:44 UTC
README
This extension provides a query builder based on the aura/sqlquery.
Install
You can install this library using Composer. It requires at least PHP 5.5 and Contao 3.2.
$ php composer.phar require netzmacht/contao-query-builder:~1.0
Documentation
Please refer to the aura/sqlquery documentation to understand the basic usage.
The Contao integration adds easy execution of the created statements and DI integration using c-c-a/dependency-container.
Basic usage
<?php $factory = $GLOBALS['container']['query-builder.factory']; // Creates insert query implementing interface Netzmacht\Contao\QueryBuilder\Query\Insert $insert = $factory->newInsert(); // Creates insert query implementing interface Netzmacht\Contao\QueryBuilder\Query\Update $update = $factory->newUpdate(); // Creates insert query implementing interface Netzmacht\Contao\QueryBuilder\Query\Select $select = $factory->newSelect(); // Creates insert query implementing interface Netzmacht\Contao\QueryBuilder\Query\Delete $delete = $factory->newDelete(); // Executing the statement $result = $statement->execute();
Extended features
Though this extension is based on aura/sqlquery it provides some extra features.
Query conditions
If you have complex where conditions you can pass an callback which generates a separate condition object.
<?php // Generates "category = 2 AND (date > ? OR highlighted = 1)" $query ->where('category = 2') ->where( function (Netzmacht\Contao\QueryBuilder\Condition $condition) { $condition->orWhere('date > ?', time()); $condition->orWhere('highlighted = 1'); } );
Where in statements
As Contao does not use PDO as driver you have to manually create whereIn statements. So that whereIn
and orWhereIn
are provided for queries and for the conditions.
<?php // Generates "category = 2 AND (date > ? OR highlighted = 1)" $query ->whereIn('category', [2, 3]) ->whereIn('author', [3, 4, 2]);
Differences
Though you can use named bind values the generated statement does only contain ?
placeholders as Contao only support
these.