v2.0.0
Atlas v2.0.0
Major release con mejoras de rendimiento, correcciones de relaciones Eloquent y modernización general del paquete.
Requisitos: PHP 8.3+ · Laravel 11+
Ruta de actualización: consulta
UPGRADE.mdpara los pasos detallados y cambios de ruptura.
Novedades
- Nuevo comando
atlas:update— re-seed de entidades habilitadas con los datos JSON más recientes, respetando la configuración deconfig('atlas.entities'). - Parser JSON en streaming — se reemplazó la carga completa en memoria por
halaxa/json-machine, eliminando picos de consumo en datasets grandes. - Índices de base de datos — nuevos índices en
iso2,iso3,region_id,subregion_id,currency_code,state_code,country_id,name(cities) y unique constraint en el pivotcountry_timezone. Ver migración de upgrade. - Validación de dependencias entre entidades —
atlas:installyatlas:updateahora verifican que las dependencias requeridas estén habilitadas y abortan si la configuración es inválida. - Nueva relación
Subregion::region()—BelongsTohaciaRegion, antes ausente. - Traducciones activas — la carga y publicación de traducciones (
atlas-translations) está ahora habilitada.
Mejoras
- Seeders envueltos en transacciones con desactivación correcta de FK constraints — se evitan estados parciales de datos.
- Inserción masiva (bulk insert) en
CountriesSeedery construcción de índice previo enTimezonesSeederpara inserciones de pivot más rápidas. - Se eliminó el override
ini_set('memory_limit', -1). - Todos los modelos usan
$fillableexplícito en lugar de$guarded = []. - Claves primarias string declaradas correctamente en
Currency(code),Timezone(zone_name) yLanguage(code). Country::$translationsahora cast aarray(consistente conRegionySubregion).- Migraciones convertidas a clases anónimas (estándar Laravel 9+).
- Compatibilidad PHPStan nivel 9 con larastan v3.
- Suite de tests comprehensiva (relaciones, schema, seeders, comandos, parsing JSON).
Correcciones
Country::currency()cambiado deHasOneaBelongsTo— la FK vive ahora encountries.currency_code.Currency::countries()cambiado deBelongsToaHasMany— una moneda puede pertenecer a múltiples países.Country::region()/subregion()renombrados a singular siguiendo convenciones Laravel.- Columnas
region→region_name,subregion→subregion_nameen la tablacountries— resuelve el conflicto entre columnas y métodos de relación. - Typo de config corregido:
country_timezon_pivot_tablename→country_timezone_pivot_tablename. - Ruta de overrides JSON corregida:
resources/json/→resources/vendor/atlas/json/(la ruta anterior nunca funcionó por colisión con el directorio del paquete). - Typo de método corregido:
getOverridedClientProjectResourcesPath()→getOverriddenClientProjectResourcesPath(). region_idycurrency_codeahoraNULLABLEpara coincidir con sus constraintsON DELETE SET NULL.- FKs hijas cambiadas de
RESTRICTaCASCADEensubregions,states,citiesy pivotcountry_timezone.
Eliminado
- Facade
Raiolanetworks\Atlas\Facades\Atlasy clase duplicadaRaiolanetworks\Atlas\Atlas. - Dependencia
spatie/laravel-package-tools. - Dependencia explícita de
illuminate/contracts(ya provista porlaravel/framework). Currency::$thousands_separatoreliminado de$fillable(nunca se pobló desde JSON).- Soporte para Laravel 10.
Migración automática
La migración de upgrade incluida maneja automáticamente: renombrado de columnas, nullable de FKs, cambio a cascade, nuevos índices y deduplicación de pivots. Solo ejecuta php artisan migrate tras actualizar.
Consulta UPGRADE.md para la guía de migración completa paso a paso.