Típus átalakítás
A Nette Database automatikusan átalakítja az adatbázisból lekérdezett értékeket a megfelelő PHP-típusokra.
Dátum és idő
A dátum- és időértékeket a Nette\Utils\DateTime
objektumokká alakítjuk át. Ha a dátum- és időértékek
átalakítását megváltoztathatatlan Nette\Database\DateTime
objektumokká szeretné, engedélyezze a
newDateTime
opciót a konfigurációban.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
A MySQL esetében a TIME
adattípus a DateInterval
objektumokká konvertálódik.
Boolean értékek
A Boolean értékek automatikusan normalizálódnak true
vagy false
típusra. A MySQL-ben a
TINYINT(1)
típus akkor kerül átalakításra, ha a konfigurációban engedélyezve
van a convertBoolean
opció.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
Numerikus értékek
A numerikus értékeket az adatbázisban lévő oszlop típusától függően int
vagy float
értékre kell átváltani:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // integer
echo gettype($row->price); // float
Egyéni normalizálás
Egyéni függvényt definiálhat az adatbázis sorainak átalakítására a
setRowNormalizer(?callable $normalizer)
módszerrel. Ez hasznos például az automatikus
adattípus-konverzióhoz.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// az adattípus konverzió itt történik
return $row;
});