Conversion de type
Nette Database convertit automatiquement les valeurs extraites de la base de données dans les types PHP appropriés.
Date et heure
Les valeurs de date et d'heure sont converties en objets Nette\Utils\DateTime
. Si vous préférez que les valeurs
de date et d'heure 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');
Pour MySQL, le type de données TIME
est converti en objets DateInterval
.
Valeurs booléennes
Les valeurs booléennes sont automatiquement normalisées en true
ou false
. Dans MySQL, le type
TINYINT(1)
est converti lorsque l'option convertBoolean
est activée dans la configuration.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // booléen
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); // entier
echo gettype($row->price); // flottant
Normalisation personnalisée
Vous pouvez définir une fonction personnalisée pour transformer les lignes de la base de données à l'aide de la méthode
setRowNormalizer(?callable $normalizer)
. Cette fonction est utile, par exemple, pour la conversion automatique des
types de données.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// la conversion des types de données se fait ici
return $row;
});