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