Skip to content

9.12.1 - Soporte para CURRENT_TIMESTAMP en DATETIME

Latest

Choose a tag to compare

@osumionline osumionline released this 14 Oct 15:54
Immutable release. Only release title and notes can be modified.

Osumi Framework 9.12.1

Esta versión añade soporte para CURRENT_TIMESTAMP como valor por defecto dinámico de campos DATETIME en el ORM.

CURRENT_TIMESTAMP

Ahora puede definirse un campo DATETIME así:

#[OField(
	type: OField::DATETIME,
	nullable: false,
	default: OField::CURRENT_TIMESTAMP
)]
public ?string $joined_at = null;

Al generar el esquema SQL, se conserva correctamente como:

`joined_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

En runtime, el ORM resuelve OField::CURRENT_TIMESTAMP al timestamp actual en formato Y-m-d H:i:s cuando aplica los valores por defecto de un nuevo modelo.

generateModelFromDB

generateModelFromDB reconoce ahora las dos representaciones habituales de MariaDB:

CURRENT_TIMESTAMP
CURRENT_TIMESTAMP()

Ambas se generan en el modelo como:

default: OField::CURRENT_TIMESTAMP

Esto permite importar correctamente esquemas reales que utilicen DEFAULT CURRENT_TIMESTAMP en columnas DATETIME.

Validación estricta

OField::CURRENT_TIMESTAMP solo puede utilizarse con campos OField::DATETIME.

Además, se diferencia expresamente del string literal:

'CURRENT_TIMESTAMP'

por lo que un valor textual con ese contenido no se interpreta como una expresión SQL.

Las demás expresiones SQL dinámicas no soportadas, como UUID(), continúan rechazándose explícitamente.

Migración

Esta versión no añade un nuevo paso automático de migración.

Los proyectos que ya utilizan 9.12.0 pueden actualizar directamente mediante Composer:

composer update osumionline/framework --with-dependencies

Después de actualizar puede volver a ejecutarse:

php of generateModelFromDB