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;
});
Version: 4.x