Typ Konvertierung
Nette Database wandelt die aus der Datenbank abgerufenen Werte automatisch in die entsprechenden PHP-Typen um.
Datum und Uhrzeit
Datums- und Zeitwerte werden in Nette\Utils\DateTime
Objekte umgewandelt. Wenn Sie es vorziehen, dass Datums- und
Zeitwerte in unveränderliche Nette\Database\DateTime
Objekte umgewandelt werden, aktivieren Sie die Option
newDateTime
in der Konfiguration.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
Für MySQL wird der Datentyp TIME
in DateInterval
Objekte umgewandelt.
Boolesche Werte
Boolesche Werte werden automatisch in true
oder false
normalisiert. In MySQL wird der Typ
TINYINT(1)
konvertiert, wenn die Option convertBoolean
in der Konfiguration aktiviert ist.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolesch'
Numerische Werte
Numerische Werte werden in int
oder float
umgewandelt, je nach Spaltentyp in der Datenbank:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // Ganzzahl
echo gettype($row->price); // Schwimmer
Benutzerdefinierte Normalisierung
Sie können eine benutzerdefinierte Funktion zur Transformation von Datenbankzeilen mit der Methode
setRowNormalizer(?callable $normalizer)
definieren. Dies ist z. B. für die automatische Datentypkonvertierung
nützlich.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// Datentypkonvertierung erfolgt hier
return $row;
});