Преобразуване на типа
Базата данни Nette автоматично преобразува стойностите, извлечени от базата данни, в съответните 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
.
Булеви стойности
Булевите стойности се нормализират автоматично към 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); // цяло число
echo gettype($row->price); // float
Персонализирана нормализация
Можете да дефинирате потребителска функция за трансформиране на
редове от базата данни, като използвате метода
setRowNormalizer(?callable $normalizer)
. Това е полезно например за автоматично
преобразуване на типовете данни.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// тук се извършва преобразуване на типа данни
return $row;
});