Conversión de tipos
Nette Database convierte automáticamente los valores recuperados de la base de datos en los tipos PHP apropiados.
Fecha y hora
Los valores de fecha y hora se convierten en objetos Nette\Utils\DateTime
. Si prefiere que los valores de fecha y
hora se conviertan en objetos inmutables Nette\Database\DateTime
, active la opción newDateTime
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');
Para MySQL, el tipo de datos TIME
se convierte en objetos DateInterval
.
Valores booleanos
Los valores booleanos se normalizan automáticamente a true
o false
. En MySQL, el tipo
TINYINT(1)
se convierte cuando se activa la opción convertBoolean
en la configuración.
$row = $database->fetch('SELECT is_published FROM articles');
echo gettype($row->is_published); // booleano
Valores numéricos
Los valores numéricos se convierten a int
o float
, dependiendo del tipo de columna de la base
de datos:
$row = $database->fetch('SELECT id, price FROM products');
echo gettype($row->id); // entero
echo gettype($row->price); // float
Normalización personalizada
Puede definir una función personalizada para transformar las filas de la base de datos utilizando el método
setRowNormalizer(?callable $normalizer)
. Esto es útil, por ejemplo, para la conversión automática de tipos
de datos.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array {
// aquí se realiza la conversión de tipos de datos
return $row;
});