Conversion de types
Nette Database convertit automatiquement les valeurs renvoyées par la base de données en types PHP correspondants.
Date et heure
Les données temporelles sont converties en objets Nette\Utils\DateTime. Si vous souhaitez que les données
temporelles soient converties en objets immuables Nette\Database\DateTime, définissez l'option
newDateTime sur true 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 définissons 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 float selon le type de 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
Avec la méthode setRowNormalizer(?callable $normalizer), vous pouvez définir votre propre fonction pour
transformer les lignes de la base de données. Ceci est utile, par exemple, pour la conversion automatique des types de
données.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// la conversion de type a lieu ici
return $row;
});