Nette Documentation Preview

syntax
Typkonvertierung
****************

.[perex]
Nette Database konvertiert automatisch Werte, die aus der Datenbank zurückgegeben werden, in die entsprechenden PHP-Typen.


Datum und Uhrzeit
-----------------

Zeitangaben werden in `Nette\Utils\DateTime`-Objekte konvertiert. Wenn Sie möchten, dass Zeitangaben in unveränderliche `Nette\Database\DateTime`-Objekte konvertiert werden, setzen Sie in der [Konfiguration|configuration] die Option `newDateTime` auf true.

```php
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
```

Bei MySQL wird der Datentyp `TIME` in `DateInterval`-Objekte konvertiert.


Boolesche Werte
---------------

Boolesche Werte werden automatisch in `true` oder `false` konvertiert. Bei MySQL wird `TINYINT(1)` konvertiert, wenn wir in der [Konfiguration|configuration] `convertBoolean` setzen.

```php
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
```


Numerische Werte
----------------

Numerische Werte werden je nach Spaltentyp in der Datenbank in `int` oder `float` konvertiert:

```php
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float
```


Eigene Normalisierung
---------------------

Mit der Methode `setRowNormalizer(?callable $normalizer)` können Sie eine eigene Funktion zur Transformation von Zeilen aus der Datenbank festlegen. Dies ist nützlich, zum Beispiel für die automatische Konvertierung von Datentypen.

```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// hier findet die Typkonvertierung statt
	return $row;
});
```

Typkonvertierung

Nette Database konvertiert automatisch Werte, die aus der Datenbank zurückgegeben werden, in die entsprechenden PHP-Typen.

Datum und Uhrzeit

Zeitangaben werden in Nette\Utils\DateTime-Objekte konvertiert. Wenn Sie möchten, dass Zeitangaben in unveränderliche Nette\Database\DateTime-Objekte konvertiert werden, setzen Sie in der Konfiguration die Option newDateTime auf true.

$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');

Bei MySQL wird der Datentyp TIME in DateInterval-Objekte konvertiert.

Boolesche Werte

Boolesche Werte werden automatisch in true oder false konvertiert. Bei MySQL wird TINYINT(1) konvertiert, wenn wir in der Konfiguration convertBoolean setzen.

$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'

Numerische Werte

Numerische Werte werden je nach Spaltentyp in der Datenbank in int oder float konvertiert:

$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float

Eigene Normalisierung

Mit der Methode setRowNormalizer(?callable $normalizer) können Sie eine eigene Funktion zur Transformation von Zeilen aus der Datenbank festlegen. Dies ist nützlich, zum Beispiel für die automatische Konvertierung von Datentypen.

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// hier findet die Typkonvertierung statt
	return $row;
});