GUÍA COMPLETA DE COMO INTEGRAR FIREBIRD CON LARAVEL
Laravel no incluye soporte nativo para Firebird, es totalmente posible integrarlo de forma limpia y profesional gracias a paquetes comunitarios.Requisitos
- PHP 8.2 o superior
- Laravel 10, 11, 12 o 13 (recomendado Laravel 11 o 12)
- Extensión PDO_Firebird instalada y activada
- Firebird 4.0 o 5.0 (recomendado)
Instalar PDO_Firebird
- Windows: Agregar en en el fichero "php.ini":
//La extensión tiene que haber sido descargada y guardada en el directorio donde se encuentran las extensiones de php extension=pdo_firebird - Linux:
sudo apt install php8.3-interbase php8.3-pdo-firebird
- Instalar el paquete recomendado
composer require harrygulliford/laravel-firebird - Configurar la conexión: Editar el archivo "config/database.php":
'connections' => [ 'firebird' => [ 'driver' => 'firebird', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', '3050'), 'database' => env('DB_DATABASE', 'C:/ruta/a/tu/base.fdb'), // Ruta completa al .fdb 'username' => env('DB_USERNAME', 'usuario_base_datos'), 'password' => env('DB_PASSWORD', 'password_base_datos'), 'charset' => env('DB_CHARSET', 'UTF8'), 'role' => null, ], ], - Configurar variables de entorno en el archivo ".env":
DB_CONNECTION=firebird DB_HOST=localhost DB_PORT=3050 DB_DATABASE=C:/datos/mi_base.fdb # En Linux: /var/lib/firebird/data/mi_base.fdb DB_USERNAME=SYSDBA DB_PASSWORD=tu_contraseña_segura DB_CHARSET=UTF8 - Usar la conexión en modelos (recomendado):
namespace App\Models; use Illuminate\Database\Eloquent\Model; class Cliente extends Model { protected $connection = 'firebird'; protected $table = 'CLIENTES'; protected $primaryKey = 'ID'; public $timestamps = false; // Firebird no usa created_at/updated_at por defecto } - Consultas básicas:
// Usando el facade DB $clientes = DB::connection('firebird') ->table('CLIENTES') ->where('ACTIVO', 1) ->get(); // Usando Eloquent $clientes = Cliente::where('ACTIVO', 1)->get();
Ejemplo completo de CRUD
// Crear
Cliente::create([
'NOMBRE' => 'Juan Pérez',
'EMAIL' => 'juan@example.com',
'FECHA' => now()->format('Y-m-d')
]);
// Leer
$cliente = Cliente::find(15);
// Actualizar
$cliente->update(['NOMBRE' => 'Juan Pérez Gómez']);
// Eliminar
$cliente->delete();
Ejemplo de una trnasacción
DB::connection('firebird')->transaction(function () {
// Queries
});
Limitaciones importantes
- No soporta Migrations de forma nativa (el paquete no lo recomienda).
- Se recomienda crear las tablas directamente en Firebird o usar scripts SQL.
- Algunos tipos de columnas avanzados (como DECFLOAT en Firebird 4/5) pueden necesitar manejo manual.
- Las convenciones de nomenclatura de Laravel (snake_case) no siempre coinciden con bases Firebird (muchas usan MAYÚSCULAS).