Nette Documentation Preview

syntax
Conversion de type
******************

.[perex]
Nette Database convertit automatiquement les valeurs extraites de la base de données dans les types PHP appropriés.


Date et heure .[#toc-date-and-time]
-----------------------------------

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 | configuration].

```php
$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 .[#toc-boolean-values]
-----------------------------------------

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 | configuration].

```php
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // booléen
```


Valeurs numériques .[#toc-numeric-values]
-----------------------------------------

Les valeurs numériques sont converties en `int` ou `float`, selon le type de colonne dans la base de données :

```php
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // entier
echo gettype($row->price); // flottant
```


Normalisation personnalisée .[#toc-custom-normalization]
--------------------------------------------------------

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.

```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// la conversion des types de données se fait ici
	return $row;
});
```

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