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;
});
versión: 4.0