-
-
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.76 KB
/
type-conversion.texy
File metadata and controls
55 lines (37 loc) · 1.76 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
Tip Dönüşümü
************
.[perex]
Nette Database, veritabanından döndürülen değerleri otomatik olarak karşılık gelen PHP tiplerine dönüştürür.
Tarih ve Saat
-------------
Zaman verileri `Nette\Utils\DateTime` nesnelerine dönüştürülür. Zaman verilerinin değişmez (immutable) `Nette\Database\DateTime` nesnelerine dönüştürülmesini istiyorsanız, [yapılandırmada |configuration] `newDateTime` seçeneğini true olarak ayarlayın.
```php
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
```
MySQL durumunda, `TIME` veri tipi `DateInterval` nesnelerine dönüştürülür.
Boolean Değerler
----------------
Boolean değerler otomatik olarak `true` veya `false` değerlerine dönüştürülür. MySQL için, [yapılandırmada |configuration] `convertBoolean` ayarını yaparsak `TINYINT(1)` dönüştürülür.
```php
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
```
Sayısal Değerler
----------------
Sayısal değerler, veritabanındaki sütun tipine göre `int` veya `float` değerlerine dönüştürülür:
```php
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // integer
echo gettype($row->price); // float
```
Özel Normalleştirme
-------------------
`setRowNormalizer(?callable $normalizer)` metodunu kullanarak veritabanından gelen satırları dönüştürmek için kendi fonksiyonunuzu ayarlayabilirsiniz. Bu, örneğin veri tiplerinin otomatik dönüşümü için kullanışlıdır.
```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// burada tip dönüşümü gerçekleşir
return $row;
});
```