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