Repository navigation
9.12.0 - Soporte nativo de DATE, DATETIME y BIGINT en el ORM
Osumi Framework 9.12.0
Esta versión amplía el ORM de Osumi Framework con soporte nativo para columnas SQL DATE, DATETIME y BIGINT, además de reforzar el sistema de migraciones del framework.
DATE y DATETIME
Hasta Osumi Framework 9.11, OField::DATE representaba realmente una columna SQL DATETIME.
A partir de 9.12 ambos tipos quedan separados:
OField::DATE → SQL DATE → PHP ?string → Y-m-d
OField::DATETIME → SQL DATETIME → PHP ?string → Y-m-d H:i:s
Los valores temporales se validan ahora de forma estricta, rechazando fechas u horas imposibles.
Los atributos automáticos #[OCreatedAt], #[OUpdatedAt] y #[ODeletedAt] continúan representando timestamps completos y utilizan internamente DATETIME.
El método OModel::get() y el pipe date de las plantillas admiten ambos tipos temporales.
BIGINT
Se añade el nuevo tipo:
OField::BIGINTLas columnas BIGINT se representan mediante propiedades PHP ?int y requieren un entorno PHP de 64 bits.
BIGINT también puede utilizarse como clave primaria mediante #[OPK], incluido autoincremento.
No se soportan columnas BIGINT UNSIGNED ni el modificador ZEROFILL.
generateModelFromDB
generateModelFromDB reconoce ahora correctamente:
DATE → OField::DATE
DATETIME → OField::DATETIME
BIGINT → OField::BIGINT
Las columnas SQL TIMESTAMP continúan rechazándose al no poder representarse fielmente mediante la semántica DATETIME del ORM.
Migración automática desde versiones anteriores
La versión 9.12.0 incluye un nuevo paso de migración.
Como OField::DATE significaba DATETIME antes de 9.12, los modelos existentes se actualizan automáticamente:
OField::DATEpasa a:
OField::DATETIMELa migración actúa únicamente sobre referencias PHP reales dentro de src/Model/, conservando comentarios y cadenas de texto.
No se modifica el esquema de la base de datos: los campos existentes mantienen su semántica DATETIME.
Después de la migración, los nuevos usos de OField::DATE representan columnas SQL DATE reales.
Nuevo estado persistente de migraciones
El estado autoritativo del sistema de migraciones deja de almacenarse en:
ofw/tmp/state.json
y pasa a:
.ofw-migrations.json
en la raíz del proyecto.
Este archivo debe versionarse junto con el código de la aplicación.
Para mantener la compatibilidad con proyectos existentes, durante la primera actualización el runner puede seguir leyendo el antiguo ofw/tmp/state.json cuando .ofw-migrations.json todavía no existe.
Este cambio evita que una limpieza de ofw/tmp/ pueda provocar accidentalmente la repetición de una migración ya ejecutada.
Actualización
La actualización puede realizarse normalmente mediante Composer:
composer update osumionline/framework --with-dependenciesLa migración 9.12.0 se ejecutará automáticamente cuando corresponda.
Después de actualizar, revisa los modelos modificados y añade .ofw-migrations.json al repositorio de la aplicación.