Download the PHP package mongoose-studio/phobos-framework-database-postgres without Composer
On this page you can find all versions of the php package mongoose-studio/phobos-framework-database-postgres. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download mongoose-studio/phobos-framework-database-postgres
More information about mongoose-studio/phobos-framework-database-postgres
Files in mongoose-studio/phobos-framework-database-postgres
Package phobos-framework-database-postgres
Short Description Phobos Framework PostgreSQL Connector for Database Layer
License MIT
Informations about the package phobos-framework-database-postgres
Phobos Framework - PostgreSQL Driver
Driver PostgreSQL para Phobos Framework Database Layer. Aprovecha las características
propias de PostgreSQL: schemas reales (search_path), INSERT ... RETURNING para leer el
id autogenerado, columnas JSONB mapeadas a arrays de PHP, y claves primarias UUIDv7
generadas en la aplicación.
Características
- 🐘 Conectividad PostgreSQL - DSN,
sslmode, y configuración de sesión - 🗂️ Schemas reales - Configuración de
search_pathy nombres calificadosschema.tabla - 🔄 Schema-per-tenant - Re-apuntado de schemas en runtime vía
SchemaRegistry - ↩️ INSERT ... RETURNING - El id autogenerado (SERIAL/IDENTITY/uuid) se lee en el INSERT
- 🧬 UUIDv7 - Claves primarias ordenadas por tiempo, generadas sin round-trip
- 📦 JSONB - Mapeo automático entre arrays de PHP y columnas JSONB vía
$casts - 🔀 Transaction Isolation - Los cuatro niveles estándar
- 🎯 Savepoints - Transacciones anidadas completas
Instalación
Dependencias
Este driver requiere:
mongoose-studio/phobos-framework^3.2mongoose-studio/phobos-framework-database^3.2- Extensión
ext-pdohabilitada - Extensión
ext-pdo_pgsqlhabilitada
Configuración
1. Registrar el Driver
En tu config/database.php:
2. Variables de Entorno
Opciones de Configuración
| Clave | Tipo | Descripción |
|---|---|---|
host |
string | Servidor PostgreSQL (requerido) |
database |
string | Nombre de la base de datos (requerido) |
port |
int | Puerto (opcional, por defecto 5432) |
username |
string | Usuario |
password |
string | Contraseña |
sslmode |
string | disable/allow/prefer/require/verify-ca/verify-full |
schema |
string | Un único schema para el search_path (ej: app) |
search_path |
string | Lista de schemas separada por comas (ej: app,public) |
timezone |
string | Zona horaria de la sesión (ej: UTC, America/Santiago) |
application_name |
string | Nombre de la aplicación (visible en pg_stat_activity) |
client_encoding |
string | Encoding del cliente (ej: UTF8) |
options |
array | Atributos PDO adicionales |
Características Específicas de PostgreSQL
Schemas y search_path
PostgreSQL organiza las tablas en schemas dentro de una misma base de datos. Hay dos formas de trabajar con ellos:
A) search_path a nivel de conexión — la entidad no declara schema y se resuelve por
el orden del search_path:
B) Nombre calificado por entidad — la entidad declara su schema; la capa genera
"schema"."tabla":
Schema-per-tenant (re-apuntado en runtime)
El $schema de la entidad es un alias lógico. Con SchemaRegistry puedes mapearlo a un
schema físico distinto por request, sin tocar el código de las entidades:
Claves primarias
El driver soporta tres estrategias vía $keyStrategy en la entidad:
Un PK ya asignado siempre gana: se persiste tal cual, sin generar ni releer.
JSONB y casteo de atributos
Declara $casts para mapear columnas automáticamente entre su forma en la base de datos y
su tipo nativo en PHP:
Nota sobre operadores JSONB y placeholders: los operadores
?,?|y?&de JSONB chocan con los placeholders?de PDO. Para consultar dentro de JSONB usawhere()crudo con operadores que no colisionen (->>,@>,#>>), por ejemplo:Account::find(["meta->>'plan' = ?" => 'pro']).
DELETE ... LIMIT
PostgreSQL no soporta DELETE ... LIMIT. Si se intenta, la capa lanza una excepción clara
(LogicException) en lugar de emitir SQL inválido. Acota las filas con un WHERE.
Niveles de aislamiento
Niveles soportados: READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.
Tests
Los tests de integración crean tablas y schemas temporales en la base phobos_test y los
limpian al terminar.
Arquitectura
- PostgresDriver (
src/Drivers/Postgres/PostgresDriver.php): extiendeAbstractDriver. Genera el DSN, configurasearch_path/timezone/application_name, y expone la gramática. - PostgresGrammar (
src/Drivers/Postgres/PostgresGrammar.php): extiendeAnsiGrammar(comillas dobles). ActivaRETURNINGy deshabilitaDELETE ... LIMIT.
Compatibilidad
- PostgreSQL 12+ (probado contra 18.x)
- PHP 8.4+
Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Autor
Marcel Rojas
[email protected]
Mongoose Studio
Contribuciones
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/amazing-feature) - Commit tus cambios (
git commit -m 'Add amazing feature') - Push a la rama (
git push origin feature/amazing-feature) - Abre un Pull Request
Phobos Framework by Mongoose Studio
All versions of phobos-framework-database-postgres with dependencies
ext-pdo Version *
ext-pdo_pgsql Version *
mongoose-studio/phobos-framework Version ^3.1
mongoose-studio/phobos-framework-database Version ^3.2