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