Μετατροπή Τύπων
Το Nette Database μετατρέπει αυτόματα τις τιμές που επιστρέφονται από τη βάση δεδομένων στους αντίστοιχους τύπους PHP.
Ημερομηνία και Ώρα
Οι χρονικές τιμές μετατρέπονται σε αντικείμενα Nette\Utils\DateTime.
Εάν θέλετε οι χρονικές τιμές να μετατρέπονται σε αμετάβλητα (immutable)
αντικείμενα DateTimeImmutable, ορίστε την επιλογή newDateTime: true στη διαμόρφωση.
$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: true
στη διαμόρφωση.
$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;
});