Conversão de tipos
Nette Database converte automaticamente os valores retornados do banco de dados para os tipos PHP correspondentes.
Data e hora
Os dados de tempo são convertidos em objetos Nette\Utils\DateTime. Se você deseja que os dados de tempo sejam convertidos em objetos imutáveis Nette\Database\DateTime, defina a opção newDateTime como true na configuração.
$row = $database->fetch('SELECT created_at FROM articles'); echo $row->created_at instanceof DateTime; // true echo $row->created_at->format('j. n. Y'); No caso do MySQL, o tipo de dados TIME é convertido em objetos DateInterval.
Valores booleanos
Os valores booleanos são automaticamente convertidos para true ou false. No MySQL, TINYINT(1) é convertido se definirmos convertBoolean como true na configuração.
$row = $database->fetch('SELECT is_published FROM articles'); echo gettype($row->is_published); // 'boolean' Valores numéricos
Os valores numéricos são convertidos para int ou float de acordo com o tipo da coluna no banco de dados:
$row = $database->fetch('SELECT id, price FROM products'); echo gettype($row->id); // integer echo gettype($row->price); // float Normalização personalizada
Usando o método setRowNormalizer(?callable $normalizer), você pode definir uma função personalizada para transformar linhas do banco de dados. Isso é útil, por exemplo, para a conversão automática de tipos de dados.
$database->setRowNormalizer(function(array $row, ResultSet $resultSet): array { // a conversão de tipos ocorre aqui return $row; });