-
-
Notifications
You must be signed in to change notification settings - Fork 277
Expand file tree
/
Copy pathtype-conversion.texy
More file actions
55 lines (37 loc) · 1.78 KB
/
type-conversion.texy
File metadata and controls
55 lines (37 loc) · 1.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Conversion de types
*******************
.[perex]
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 |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');
```
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 |configuration].
```php
$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 :
```php
$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.
```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// la conversion de type a lieu ici
return $row;
});
```