Преобразование типов
Nette Database автоматически преобразует значения, получаемые из базы данных, в соответствующие 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;
});