Conversión de tipos
Nette Database convierte automáticamente los valores devueltos de la base de datos a los tipos PHP correspondientes.
Fecha y hora
Los datos de tiempo se convierten en objetos Nette\Utils\DateTime. Si desea que los datos de tiempo se conviertan
en objetos inmutables Nette\Database\DateTime, establezca la opción newDateTime en true en la configuración.
$row = $database->fetch('SELECT created_at FROM articles');
echo $row->created_at instanceof DateTime; // true
echo $row->created_at->format('j. n. Y');
En el caso de MySQL, convierte el tipo de dato TIME en objetos DateInterval.
Valores booleanos
Los valores booleanos se convierten automáticamente a true o false. Para MySQL,
TINYINT(1) se convierte si establecemos convertBoolean: true en la configuración.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // 'boolean'
Valores numéricos
Los valores numéricos se convierten a int o float según el tipo de columna en la base
de datos:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // integer
echo gettype($row->price); // double (o float)
Normalización personalizada
Usando el método setRowNormalizer(?callable $normalizer), puedes establecer una función personalizada para
transformar las filas de la base de datos. Esto es útil, por ejemplo, para la conversión automática de tipos de datos.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// aquí ocurre la conversión de tipos
return $row;
});