Nette Documentation Preview

syntax
Típuskonverzió
**************

.[perex]
A Nette Database automatikusan konvertálja az adatbázisból visszaadott értékeket a megfelelő PHP típusokra.


Dátum és idő
------------

Az időadatok `Nette\Utils\DateTime` objektumokká konvertálódnak. Ha azt szeretné, hogy az időadatok immutable `Nette\Database\DateTime` objektumokká konvertálódjanak, állítsa a `newDateTime` opciót true-ra a [konfigurációban |configuration].

```php
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('Y. n. j.');
```

MySQL esetén a `TIME` adattípust `DateInterval` objektumokká konvertálja.


Logikai értékek
---------------

A logikai értékek automatikusan `true`-ra vagy `false`-ra konvertálódnak. MySQL esetén a `TINYINT(1)` konvertálódik, ha a [konfigurációban |configuration] beállítjuk a `convertBoolean`-t.

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


Numerikus értékek
-----------------

A numerikus értékek `int`-re vagy `float`-ra konvertálódnak az adatbázis oszlopának típusa szerint:

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


Egyéni normalizálás
-------------------

A `setRowNormalizer(?callable $normalizer)` metódussal beállíthat egy egyéni funkciót az adatbázisból származó sorok átalakítására. Ez hasznos lehet például az adattípusok automatikus konvertálásához.

```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// itt történik a típuskonverzió
	return $row;
});
```

Típuskonverzió

A Nette Database automatikusan konvertálja az adatbázisból visszaadott értékeket a megfelelő PHP típusokra.

Dátum és idő

Az időadatok Nette\Utils\DateTime objektumokká konvertálódnak. Ha azt szeretné, hogy az időadatok immutable Nette\Database\DateTime objektumokká konvertálódjanak, állítsa a newDateTime opciót true-ra a konfigurációban.

$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('Y. n. j.');

MySQL esetén a TIME adattípust DateInterval objektumokká konvertálja.

Logikai értékek

A logikai értékek automatikusan true-ra vagy false-ra konvertálódnak. MySQL esetén a TINYINT(1) konvertálódik, ha a konfigurációban beállítjuk a convertBoolean-t.

$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'

Numerikus értékek

A numerikus értékek int-re vagy float-ra konvertálódnak az adatbázis oszlopának típusa szerint:

$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id);    // integer
echo gettype($row->price); // float

Egyéni normalizálás

A setRowNormalizer(?callable $normalizer) metódussal beállíthat egy egyéni funkciót az adatbázisból származó sorok átalakítására. Ez hasznos lehet például az adattípusok automatikus konvertálásához.

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// itt történik a típuskonverzió
	return $row;
});