Nette Documentation Preview

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

.[perex]
Nette Database wandelt die aus der Datenbank zurückgegebenen Werte automatisch in die entsprechenden PHP-Typen um.


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

Zeitwerte werden in Objekte vom Typ `Nette\Utils\DateTime` umgewandelt. Wenn Sie möchten, dass Zeitwerte in unveränderliche Objekte vom Typ `Nette\Database\DateTime` umgewandelt 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 Objekte vom Typ `DateInterval` umgewandelt.


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

Boolesche Werte werden automatisch in `true` oder `false` umgewandelt. Bei MySQL wird `TINYINT(1)` umgewandelt, 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` umgewandelt:

```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 Umwandlung der Zeilen aus der Datenbank setzen. Das ist zum Beispiel für die automatische Konvertierung von Datentypen nützlich.

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

Typkonvertierung

Nette Database wandelt die aus der Datenbank zurückgegebenen Werte automatisch in die entsprechenden PHP-Typen um.

Datum und Uhrzeit

Zeitwerte werden in Objekte vom Typ Nette\Utils\DateTime umgewandelt. Wenn Sie möchten, dass Zeitwerte in unveränderliche Objekte vom Typ Nette\Database\DateTime umgewandelt 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 Objekte vom Typ DateInterval umgewandelt.

Boolesche Werte

Boolesche Werte werden automatisch in true oder false umgewandelt. Bei MySQL wird TINYINT(1) umgewandelt, 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 umgewandelt:

$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 Umwandlung der Zeilen aus der Datenbank setzen. Das ist zum Beispiel für die automatische Konvertierung von Datentypen nützlich.

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