Преобразуване на типове
Nette Database автоматично преобразува стойностите, върнати от базата данни, в съответните PHP типове.
Дата и час
Данните за време се преобразуват в обекти Nette\Utils\DateTime
. Ако
искате данните за време да се преобразуват в immutable обекти
Nette\Database\DateTime
, задайте опцията 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
.
Булеви стойности
Булевите стойности автоматично се преобразуват в 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;
});