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;
});