# SQL Query Builder

###### Verwendete Libraries

* **Aura.SqlQuery**:
  * Composer: `aura/sqlquery:2.7.*`
  * Packagist: https://packagist.org/packages/aura/sqlquery
  * GitHub: https://github.com/auraphp/Aura.SqlQuery
  * Docs: https://github.com/auraphp/Aura.SqlQuery/tree/2.x

## Query Builder erzeugen

```php
$select = $db->select();
$update = $db->update();
$insert = $db->insert();
$delete = $db->delete();
```

## SELECT-Query

https://github.com/auraphp/Aura.SqlQuery/tree/2.x#select

###### Beispiel mit Named-Placeholder

```php
$select = $db->select();
$select
    ->cols(['u.id', 'u.description'])
    ->from('user AS u')
    ->where('u.id = :user_id')
    ->bindValue('user_id', 1);

$result = $db->fetchAll(
    $select->getStatement(),
    $select->getBindValues()
);

var_export($result);
// array(
//     0 => array(
//         'id' => 1,
//         'description' => 'Administrator',
//     ),
// )
```

###### Alternative mit ?-Placeholder

```php
$select = $db->select();
$select
    ->cols(['u.id', 'u.description'])
    ->from('user AS u')
    ->where('u.id = ?', 1);
```

###### Beispiel mit Verschachtelung im WHERE

```php
$select = $db->select();
$select
    ->cols(['u.id', 'u.description'])
    ->from('user AS u')
    ->where('u.activ = ?', 1)
    ->where(function (SelectQuery $query) {
        $query->where('u.type = ?', 'admin')
            ->orWhere('u.type = ?', 'standard');
    });

echo $select->getStatement();
```
```sql
SELECT
    `u`.`id`,
    `u`.`description`
FROM
    `user` AS `u`
WHERE
   `u`.`activ` = :_1_1_
   AND (
       `u`.`type` = :_1_2_
       OR `u`.`type` = :_1_3_
   )
```

## INSERT-Query

https://github.com/auraphp/Aura.SqlQuery/tree/2.x#insert

## UPDATE-Query

https://github.com/auraphp/Aura.SqlQuery/tree/2.x#update

## DELETE-Query

https://github.com/auraphp/Aura.SqlQuery/tree/2.x#delete