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