Nette Documentation Preview

syntax
Μετατροπή τύπου
***************

.[perex]
Η Nette Database μετατρέπει αυτόματα τις τιμές που ανακτώνται από τη βάση δεδομένων στους κατάλληλους τύπους PHP.


Ημερομηνία και ώρα .[#toc-date-and-time]
----------------------------------------

Οι τιμές ημερομηνίας και ώρας μετατρέπονται σε αντικείμενα `Nette\Utils\DateTime`. Αν προτιμάτε οι τιμές ημερομηνίας και ώρας να μετατρέπονται σε αμετάβλητα αντικείμενα `Nette\Database\DateTime`, ενεργοποιήστε την επιλογή `newDateTime` στη [ρύθμιση παραμέτρων | 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');
```

Για τη MySQL, ο τύπος δεδομένων `TIME` μετατρέπεται σε αντικείμενα `DateInterval`.


Τιμές Boolean .[#toc-boolean-values]
------------------------------------

Οι τιμές Boolean κανονικοποιούνται αυτόματα σε `true` ή `false`. Στη MySQL, ο τύπος `TINYINT(1)` μετατρέπεται όταν η επιλογή `convertBoolean` είναι ενεργοποιημένη στη [ρύθμιση παραμέτρων | configuration].

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


Αριθμητικές τιμές .[#toc-numeric-values]
----------------------------------------

Οι αριθμητικές τιμές μετατρέπονται σε `int` ή `float`, ανάλογα με τον τύπο της στήλης στη βάση δεδομένων:

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


Προσαρμοσμένη κανονικοποίηση .[#toc-custom-normalization]
---------------------------------------------------------

Μπορείτε να ορίσετε μια προσαρμοσμένη συνάρτηση για τον μετασχηματισμό των γραμμών της βάσης δεδομένων χρησιμοποιώντας τη μέθοδο `setRowNormalizer(?callable $normalizer)`. Αυτό είναι χρήσιμο, για παράδειγμα, για την αυτόματη μετατροπή τύπων δεδομένων.

```php
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// η μετατροπή τύπου δεδομένων γίνεται εδώ
	return $row;
});
```

Μετατροπή τύπου

Η Nette Database μετατρέπει αυτόματα τις τιμές που ανακτώνται από τη βάση δεδομένων στους κατάλληλους τύπους PHP.

Ημερομηνία και ώρα

Οι τιμές ημερομηνίας και ώρας μετατρέπονται σε αντικείμενα Nette\Utils\DateTime. Αν προτιμάτε οι τιμές ημερομηνίας και ώρας να μετατρέπονται σε αμετάβλητα αντικείμενα Nette\Database\DateTime, ενεργοποιήστε την επιλογή newDateTime στη ρύθμιση παραμέτρων.

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

Για τη MySQL, ο τύπος δεδομένων TIME μετατρέπεται σε αντικείμενα DateInterval.

Τιμές Boolean

Οι τιμές Boolean κανονικοποιούνται αυτόματα σε true ή false. Στη MySQL, ο τύπος TINYINT(1) μετατρέπεται όταν η επιλογή convertBoolean είναι ενεργοποιημένη στη ρύθμιση παραμέτρων.

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

Αριθμητικές τιμές

Οι αριθμητικές τιμές μετατρέπονται σε int ή float, ανάλογα με τον τύπο της στήλης στη βάση δεδομένων:

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

Προσαρμοσμένη κανονικοποίηση

Μπορείτε να ορίσετε μια προσαρμοσμένη συνάρτηση για τον μετασχηματισμό των γραμμών της βάσης δεδομένων χρησιμοποιώντας τη μέθοδο setRowNormalizer(?callable $normalizer). Αυτό είναι χρήσιμο, για παράδειγμα, για την αυτόματη μετατροπή τύπων δεδομένων.

$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
	// η μετατροπή τύπου δεδομένων γίνεται εδώ
	return $row;
});