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;
});
version: 4.0