Pretvorba tipa
Podatkovna baza Nette samodejno pretvori vrednosti, pridobljene iz podatkovne baze, v ustrezne tipe PHP.
Datum in čas
Vrednosti datuma in časa se pretvorijo v predmete Nette\Utils\DateTime
. Če želite, da se vrednosti datuma in
časa pretvorijo v nespremenljive Nette\Database\DateTime
objekte, v konfiguraciji omogočite možnost newDateTime
.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
Za MySQL se podatkovni tip TIME
pretvori v objekte DateInterval
.
Logične vrednosti
Logične vrednosti se samodejno normalizirajo v true
ali false
. V MySQL se tip
TINYINT(1)
pretvori, ko je v konfiguraciji omogočena
možnost convertBoolean
.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
Številčne vrednosti
Številčne vrednosti se pretvorijo v int
ali float
, odvisno od vrste stolpca v zbirki podatkov:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // celo število
echo gettype($row->price); // float
Normalizacija po meri
Določite lahko funkcijo po meri za preoblikovanje vrstic podatkovne zbirke z uporabo metode
setRowNormalizer(?callable $normalizer)
. To je uporabno na primer za samodejno pretvorbo podatkovnih tipov.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// tu se zgodi pretvorba podatkovnih tipov
return $row;
});