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;
});
versiune: 4.0