Преобразуване на типа

Базата данни 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;
});
версия: 4.0