Conversia tipurilor
Nette Database convertește automat valorile returnate din baza de date în tipurile PHP corespunzătoare.
Data și ora
Datele de timp sunt convertite în obiecte Nette\Utils\DateTime. Dacă doriți ca datele de timp să fie
convertite în obiecte imuabile Nette\Database\DateTime, setați opțiunea newDateTime la true în configurație.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
În cazul MySQL, convertește tipul de date TIME în obiecte DateInterval.
Valori booleene
Valorile booleene sunt convertite automat în true sau false. Pentru MySQL, se convertește
TINYINT(1) dacă setăm convertBoolean: true în configurație.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
Valori numerice
Valorile numerice sunt convertite î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); // integer
echo gettype($row->price); // float
Normalizare personalizată
Folosind metoda setRowNormalizer(?callable $normalizer), puteți seta o funcție personalizată pentru
transformarea rândurilor din baza de date. Acest lucru este util, de exemplu, pentru conversia automată a tipurilor
de date.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// aici are loc conversia tipurilor
return $row;
});