Típuskonverzió
A Nette Database automatikusan konvertálja az adatbázisból visszaadott értékeket a megfelelő PHP típusokra.
Dátum és idő
Az időadatok Nette\Utils\DateTime objektumokká konvertálódnak. Ha azt szeretné, hogy az időadatok immutable Nette\Database\DateTime objektumokká konvertálódjanak, állítsa a newDateTime opciót true-ra a konfigurációban.
$row = $database->fetch('SELECT created_at FROM articles'); echo $row->created_at instanceof DateTime; // true echo $row->created_at->format('Y. n. j.'); MySQL esetén a TIME adattípust DateInterval objektumokká konvertálja.
Logikai értékek
A logikai értékek automatikusan true-ra vagy false-ra konvertálódnak. MySQL esetén a TINYINT(1) konvertálódik, ha a konfigurációban beállítjuk a convertBoolean-t.
$row = $database->fetch('SELECT is_published FROM articles'); echo gettype($row->is_published); // 'boolean' Numerikus értékek
A numerikus értékek int-re vagy float-ra konvertálódnak az adatbázis oszlopának típusa szerint:
$row = $database->fetch('SELECT id, price FROM products'); echo gettype($row->id); // integer echo gettype($row->price); // float Egyéni normalizálás
A setRowNormalizer(?callable $normalizer) metódussal beállíthat egy egyéni funkciót az adatbázisból származó sorok átalakítására. Ez hasznos lehet például az adattípusok automatikus konvertálásához.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array { // itt történik a típuskonverzió return $row; });