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;
});
Version: 4.0