Utilizando Laravel con Oracle

Oracle es un software de base de datos muy poderoso utilizado por las grandes empresas preferido por su seguridad y soporte, sin embargo Laravel aún no cuenta con soporte nativo para conectarse a Oracle, sin embargo existe una solución en forma de paquete para poder utilizar oracle como gestor de base de datos, hace unos meses atrás lo utilice en un proyecto de universidad y me funcionó muy bien.

En este tutorial también aprenderás a crear un entorno de desarrollo que soporta Oracle con Homestead, así que pasemos a lo que vas a necesitar para llevar a cabo este tutorial.

NOTA: Si tu entorno de desarrollo ya está disponible y solo quieres conectar laravel con tu base de datos oracle, dirígete al paso 3.

Requerimientos

  1. Máquina Virtual Homestead + Oracle
  2. Driver Oracle Laravel
  3. Vagrant
  4. Oracle 11g express edition

Los pasos para instalar los requerimientos los puedes encontrar en los enlaces.

Paso 1. 

  • Debes de tener descargado el rpm para Linux de 64 bits
  • Realizas un clon del repositorio
  • Por último ingresas a la carpeta del repositorio clonado e instalas vbguest.
  • En el directorio

    homestead-oracle/puppet/modules/oracle/files

    se debe de colocar el rpm de oracle (descargado al principio) sin descomprimir.

  • Por último ejecutas vagrant up y ya tendrás el entorno de Homestead con Oracle ejecuntandose en tu Máquina Virtual.

Paso 2:

  • Puedes probar la conexión con sqldeveloper y debe devolver el estado “correcto” abajo encontrarás una imagen, por defecto la máquina virtual tiene los 2 usuarios de sistema y un tercero que es el de Homestead y contraseña secret.

Laravel con oracle

Observaciones:  la rama master del paquete incluye PHP7 en la instalación, si necesitas soporte para otra versión puedes buscar la rama que pueda cumpla tus requerimientos.

Paso 3: 

  • Dependiendo de la versión de Laravel que estes utilizando, realizarás la instalación del paquete Driver Oracle.
  • Debes configurar el service provider
  • Esto te permite que se cree un archivo llamado “oracle.php” en la configuración de la aplicación (config/oracle.php) el cual contiene los datos de configuracion y acceso que luego se configuran en el archivo .env tus datos, ejecuta lo siguiente:

    El archivo .env puede quedar escrito así:
    Laravel con oracle

Con esto hecho ya puedes empezar a realizar tus migraciones y trabajar con oracle como si utilizaras cualquier otro driver de Base de Datos y aprovechar todas las características disponibles dentro de Eloquent y Fluent.

 

Problemas que pueden surgir durante la instalación.

OCI8 faltante:

Laravel con oracle

La Solución: Debes de ingresar por SSH a dicha máquina virtual y dirigirte al directorio /etc/php/versionPHP/mods-available y crear un archivo .ini referenciando a la extensión de oci8

Tu archivo debe de llamarse oci8.ini y en él debes escribir lo siguiente

Luego ejecutas un vagrant provision en el directorio de tu homestead y todo deberá de funcionar de maravilla.

Espero que este tutorial te pueda orientar a como trabajar con oracle y que ahora en adelante veas que no es tan complicado trabajar en local con oracle o incluso en producción, agradecimientos especiales a @Yajra quien es el autor de ambos repositorios y siempre los mantiene actualizados.

En Laraveles.com siempre estamos dispuesto a ayudar, si tienes alguna duda o pregunta puedes dejarlo en tus comentarios o unirte a nuestro Slack.

Comparte este artículo

Entra en la discusión y deja tu comentario

  • Jyms ☥

    hola, No he logrado solucionar el siguiente error,

    [SymfonyComponentDebugExceptionFatalThrowableError]
    Call to undefined function YajraPdooci_connect()

    Gracias de antemano.

    • Daniel Lara

      Revisaste el final del post, allí esta la solución, explicame un poco más que has hecho, que entorno de desarrollo estas usando y con gusto te puedo apoyar.

      • Jyms ☥

        Primero que todo muchas gracias por responder, tengo Homestead instalado en windows 10, realice paso a paso el procedimiento para instalar Yajra en mi proyecto Laravel y tambien hice el procedimiento que mencionas al final de post, pero igual me siue saliendo el mensaje de error