Conversia tipurilor
Nette Database convertește automat valorile preluate din baza de date în tipurile PHP corespunzătoare.
Data și ora
Valorile datei și orei sunt convertite în obiecte Nette\Utils\DateTime
. Dacă preferați ca valorile datei și
orei să fie convertite în obiecte imuabile Nette\Database\DateTime
, activați opțiunea newDateTime
în configurare.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
Pentru MySQL, tipul de date TIME
este convertit în obiecte DateInterval
.
Valori booleene
Valorile booleene sunt normalizate automat la true
sau false
. În MySQL, tipul
TINYINT(1)
este convertit atunci când opțiunea convertBoolean
este activată în configurare.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // "boolean
Valori numerice
Valorile numerice sunt transformate în int
sau float
, în funcție de tipul coloanei din baza
de date:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // număr întreg
echo gettype($row->price); // float
Normalizare personalizată
Puteți defini o funcție personalizată pentru a transforma rândurile din baza de date utilizând metoda
setRowNormalizer(?callable $normalizer)
. Acest lucru este util, de exemplu, pentru conversia automată a tipurilor
de date.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// conversia tipurilor de date are loc aici
return $row;
});