Konverze typů

Nette Database automaticky konvertuje hodnoty vrácené z databáze na odpovídající PHP typy.

Datum a čas

Časové údaje jsou převáděny na objekty Nette\Utils\DateTime. Pokud chcete, aby byly časové údaje převáděny na immutable objekty Nette\Database\DateTime, nastavte v konfiguraci volbu newDateTime na true.

$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');

V případě MySQL převádí datový typ TIME na objekty DateInterval.

Booleovské hodnoty

Booleovské hodnoty jsou automaticky převedeny na true nebo false. U MySQL se převádí TINYINT(1) pokud nastavíme v konfiguraci convertBoolean.

$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'

Číselné hodnoty

Číselné hodnoty jsou převedeny na int nebo float podle typu sloupce v databázi:

$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float

Vlastní normalizace

Pomocí metody setRowNormalizer(?callable $normalizer) můžete nastavit vlastní funkci pro transformaci řádků z databáze. To se hodí například pro automatický převod datových typů.

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// tady proběhne konverze typů
	return $row;
});
verze: 4.0 3.x