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