Μετατροπή Τύπων

Το 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;
});
έκδοση: 4.0