Download the PHP package versaorm/versaorm-php without Composer
On this page you can find all versions of the php package versaorm/versaorm-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download versaorm/versaorm-php
More information about versaorm/versaorm-php
Files in versaorm/versaorm-php
Package versaorm-php
Short Description ORM ligero y seguro para PHP con motor PDO nativo - Query Builder fluido, Active Record simple, alto rendimiento
License MIT
Homepage https://github.com/kriollo/versa-orm
Informations about the package versaorm-php
🚀 VersaORM-PHP
ORM sencillo y seguro para PHP – minimiza SQL manual y acelera tu desarrollo.
- Última versión estable: 2.2.1
- Compatible con PHP 8.1+
VersaORM-PHP está construido sobre PDO nativo para máxima compatibilidad, simplicidad y rendimiento. No requiere compilación externa: solo PHP + tu base de datos.
📚 Documentación Completa
- 📖 Documentación Principal - Guía completa desde básico hasta avanzado
- 🤖 Guía para IAs (llms.txt) - Mapa del repo y API clave para asistentes
- 🚀 Inicio Rápido - Empieza en 5 minutos
- ⚙️ Instalación - Composer e instalación manual
- 🔧 CRUD Básico - Create, Read, Update, Delete
- 🔍 Query Builder - Consultas fluidas y seguras
- 🔗 Relaciones - hasMany, belongsTo, many-to-many
- 📖 Referencia SQL - Equivalencias SQL ↔ VersaORM
🆕 Guías Especializadas (v1.8.6+)
- 🔧 Migración SchemaBuilder - De schemaCreate() al nuevo SchemaBuilder
- 🔗 Foreign Keys e Índices - Guía completa con ejemplos prácticos
- 🐘 PostgreSQL SSL & Pokio - Solución a errores de concurrencia y SSL (v1.8.4)
- ⚡ Tuning DB para Tests - Perfil rápido para MariaDB y PostgreSQL en entorno local
📋 ¿Qué es VersaORM?
VersaORM te permite interactuar con tu base de datos usando objetos PHP y un Query Builder fluido, apoyándose internamente en PDO. Así reduces errores, previenes inyecciones SQL y escribes código expresivo.
🤔 ¿Qué es un ORM?
Un ORM (Object-Relational Mapping) traduce tus objetos PHP a filas en la base de datos. En vez de escribir SQL como esto:
Con VersaORM escribes código PHP natural y seguro:
🏆 ¿Por qué elegir VersaORM?
| Necesidad | Sin ORM (solo PDO) | Con VersaORM |
|---|---|---|
| Seguridad | Debes escribir y parametrizar cada sentencia | Parámetros preparados automáticamente |
| Mantenimiento | SQL repetido en muchos archivos | Lógica centralizada y fluida |
| Curva de aprendizaje | Conocer bien SQL + PDO | API consistente (where, join, order, etc.) |
| Refactors | Buscar/editar cadenas SQL | Cambias métodos encadenados |
| Errores típicos | Inyección, comas, orden de placeholders | Minimizado por API tipada |
🌟 Características Principales
- ✅ Construido sobre PDO - Sin dependencias complicadas
- 🛡️ Seguridad por defecto - Prepared statements automáticos
- 🧩 Modelos Active Record -
dispense,load,store,trash - 🔍 Query Builder fluido -
where,join,groupBy,having,orderBy,limit - 🧠 JOINs avanzados - Condiciones encadenadas con
on()yonRaw() - 🔗 Relaciones - hasMany, belongsTo, many-to-many
- ⏰ Timestamps automáticos -
created_atyupdated_atcon valores por defecto (Fix v1.4.1) - 🏗️ SchemaBuilder moderno - API fluida para DDL con migración desde arrays
- 🔑 Foreign Keys flexibles - Sintaxis
foreign(['campo'])yforeign('campo')validadas - 💾 Conversión de tipos avanzada - Fechas, booleanos, JSON y auto-inferencia de tipos (v1.8.4)
- 🔀 Operaciones de conjuntos - UNION, INTERSECT, EXCEPT y Full Outer Join emulado (v1.8.4)
- 🔍 Depuración de consultas - Inspección con
toSql()ygetBindings()(v1.8.6) - 🚫 Cero compilación - Solo PHP puro
- 📦 Batch simple de modelos -
VersaModel::storeAll([$m1,$m2])devuelve array de IDs - ⚡ Soporte Pokio (Async/Fork) - Preparado para concurrencia segura con PostgreSQL y SSL (v1.8.4)
✨ Arquitectura
Simple y directo: Todo fluye a través de PDO sin procesos externos.
🛠️ Instalación
Via Composer (Recomendado)
Instalación Manual
-
Descarga o clona el repositorio:
- Incluye los archivos necesarios:
Requisitos del Sistema
- PHP: 8.1 o superior
- Extensiones: PDO, json, mbstring
- Base de datos: MySQL 5.7+, PostgreSQL 10+, o SQLite 3.6+
- Sistema operativo: Windows, Linux, macOS
📖 Guía detallada: Instalación paso a paso
⚡ Inicio Rápido
1. Instalación
2. Configuración Básica
3. Tu Primer Ejemplo
¿Quieres más ejemplos? → Ver documentación completa
4. Ejemplos Comparativos (SQL vs VersaORM)
CRUD Básico - SQL vs VersaORM
Query Builder - Consultas Fluidas y Seguras
🔗 Joins Compuestos (Nuevo patrón sencillo)
Necesitas unir por más de una columna? Usa el encadenado join()->on()->on() para mantenerlo claro:
Regla simple: lo que define el emparejamiento va en on(), lo que filtra el resultado final va en where().
Operaciones CRUD Avanzadas
Modelos con Validación
🔧 Configuración Rápida
Configuración Básica
Configuraciones por Base de Datos
Drivers soportados y alias
VersaORM reconoce estos drivers principales:
mysql(alias:mariadb)postgresql(alias:pgsql,postgres)sqlite
Se recomienda usar los nombres canónicos (mysql, postgresql, sqlite). Los alias se mantienen por compatibilidad.
MySQL/MariaDB:
PostgreSQL:
SQLite:
Nota sobre persistencia: store() siempre devuelve el ID (int|string) del registro insertado/actualizado. Puedes capturarlo:
📖 Configuración detallada: Ver guía completa
📁 Estructura del Proyecto
🏆 Mejores Prácticas Demostradas
1. Usar Métodos ORM para Operaciones Básicas
2. exec() Solo para Consultas Complejas
3. Manejo de Errores Apropiado
4. 🔒 Modo Freeze para Protección de Esquema
🚨 Troubleshooting
Error de conexión a la base de datos
- Verifica las credenciales en la configuración
- Asegúrate de que el servidor de base de datos esté ejecutándose
- Confirma que la base de datos existe o que el usuario tiene permisos para crearla
- Revisa que las extensiones PDO necesarias estén instaladas
Errores comunes
- Class not found: Verifica que el autoloader esté incluido correctamente
- PDO extension not found: Instala la extensión PDO para tu base de datos
- Permission denied: Verifica permisos de escritura para SQLite
- Connection refused: Confirma host y puerto de la base de datos
📖 Guía completa de troubleshooting: Manejo de errores
📚 Documentación Detallada
🎯 Por Nivel de Experiencia
- 👶 Principiante: CRUD Básico
- 🏃 Intermedio: Avanzado
- 🚀 Experto: Referencia SQL
📖 Por Tema
- 🔧 CRUD y Modelos - dispense, load, store, trash
- 🔍 Query Builder - Consultas fluidas y seguras
- 🔗 Relaciones - hasMany, belongsTo, many-to-many
- 🚀 Funciones Avanzadas - Batch, UPSERT, transacciones
- 🔒 Seguridad - Validación, freeze mode, tipado
- 📖 Referencia SQL - Equivalencias SQL ↔ VersaORM
🛠️ Para Desarrolladores
- 🧪 Aplicación de Ejemplo - Demo completa funcional
- 🏗️ Contribuir - Guía para contribuir al proyecto
🌟 Características Destacadas
⚡ Alto Rendimiento
- PDO optimizado con prepared statements reutilizables
- API fluida que reduce código repetitivo y errores
- Query Builder eficiente con generación SQL optimizada
- Lazy loading para relaciones bajo demanda
🛡️ Seguridad Robusta
- Prepared statements automáticos - Protección contra SQL injection
- Mass Assignment protection - Control con
$fillable/$guarded - Validación declarativa - Reglas por modelo automáticas
- Freeze mode - Bloquea cambios accidentales de esquema en producción
🚀 Desarrollo Ágil
- Creación automática de campos - Desarrollo rápido sin DDL manual
- Detección inteligente de tipos - Mapeo automático PHP ↔ SQL
- Modo development - Prototipado rápido sin esquemas previos
- Transición suave - De desarrollo (freeze OFF) a producción (freeze ON)
🔄 Máxima Compatibilidad
- Múltiples bases de datos - MySQL, PostgreSQL, SQLite
- Framework agnostic - Integra con cualquier proyecto PHP
- Estándares PSR - Sigue las mejores prácticas de PHP
🤝 Contribuir
¡Las contribuciones son bienvenidas! Por favor:
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/nueva-funcionalidad) - Commit tus cambios (
git commit -m 'Agregar nueva funcionalidad') - Push a la rama (
git push origin feature/nueva-funcionalidad) - Abre un Pull Request
Reportar Bugs
- Usa el Issue Tracker
- Incluye detalles del entorno (PHP version, OS, DB)
- Proporciona pasos para reproducir el problema
📄 Licencia
MIT License - ver archivo LICENSE para detalles.
💬 Soporte
- Documentación: docs/
- Issues: GitHub Issues
- Discusiones: GitHub Discussions
- Email: [email protected]
�️ SQL vs VersaORM (Cheat Sheet Rápido)
| Objetivo | SQL | VersaORM |
|---|---|---|
| Insert | INSERT INTO users (name) VALUES (?) |
$u=VersaModel::dispense('users');$u->name='Ana';$u->store(); |
| Select por ID | SELECT * FROM users WHERE id=? |
$u=VersaModel::load('users',1); |
| Filtro múltiple | ... WHERE status='a' AND age>=18 |
$orm->table('users')->where('status','=','a')->where('age','>=',18)->getAll(); |
| Orden + Límite | ORDER BY created_at DESC LIMIT 10 |
->orderBy('created_at','desc')->limit(10) |
| Join simple | SELECT u.*,p.bio FROM users u JOIN profiles p ON p.user_id=u.id |
$orm->table('users')->join('profiles','users.id','=','profiles.user_id')->select(['users.*','profiles.bio'])->getAll(); |
| Agregación | SELECT status,COUNT(*) c FROM users GROUP BY status |
$orm->table('users')->select(['status','COUNT(*) c'])->groupBy('status')->getAll(); |
| Delete cond. | DELETE FROM sessions WHERE last_seen < ? |
$orm->table('sessions')->where('last_seen','<',$cut)->delete(); |
| Update masivo | UPDATE products SET active=0 WHERE stock=0 |
$orm->table('products')->where('stock','=',0)->update(['active'=>0]); |
| Upsert | INSERT ... ON DUPLICATE KEY UPDATE |
$orm->table('cfg')->upsert($data,['key'],['value']); |
🧭 Roadmap
🎯 Próximas Funcionalidades
- Generador de migraciones - Sistema automático de migraciones
- Seeders inteligentes - Población de datos de desarrollo
- Caché de consultas - Sistema de caché configurable
- Tipos avanzados - UUID, Money, JSON helpers
- Auditoría automática - Campos created_by/updated_by automáticos
- Eventos de modelo - Hooks before/after save/delete
- Validación avanzada - Reglas personalizadas y condicionales
🔮 Visión a Largo Plazo
- Performance optimizations - Mejoras continuas de rendimiento
- IDE integration - Mejor soporte para autocompletado
- Database-specific features - Aprovechamiento de características únicas por BD
🎉 ¿Listo para empezar?
- 📖 Lee la introducción - Entiende los conceptos básicos
- ⚙️ Instala VersaORM - Configuración en 5 minutos
- 🔧 Prueba los ejemplos - CRUD básico funcional
- 🚀 Explora funciones avanzadas - Documentación completa
🚀 VersaORM-PHP - Simplicidad, Seguridad y Productividad para PHP
All versions of versaorm-php with dependencies
ext-json Version *