Conversion de types

Nette Database convertit automatiquement les valeurs renvoyées par la base de données vers les types PHP correspondants.

Date et heure

Les valeurs temporelles sont converties en objets Nette\Utils\DateTime. Si vous voulez qu'elles soient converties en objets immuables Nette\Database\DateTime, activez l'option newDateTime dans la configuration.

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

Dans le cas de MySQL, le type de données TIME est converti en objets DateInterval.

Valeurs booléennes

Les valeurs booléennes sont automatiquement converties en true ou false. Pour MySQL, TINYINT(1) est converti si nous activons convertBoolean dans la configuration.

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

Valeurs numériques

Les valeurs numériques sont converties en int ou en float selon le type de la colonne dans la base de données :

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

Normalisation personnalisée

À l'aide de la méthode setRowNormalizer(?callable $normalizer), vous pouvez définir votre propre fonction de transformation des lignes venant de la base de données. C'est utile, par exemple, pour convertir automatiquement les types de données.

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// la conversion des types a lieu ici
	return $row;
});