Μετατροπή Τύπων
Το 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;
});