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;
});