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
    
  1. Instalar el paquete recomendado
    composer require harrygulliford/laravel-firebird
    
  2. 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,
        ],
    ],
    
  3. 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
    
  4. 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
    }
    
  5. 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).