Laravel 5.6 en Windows con SQL Server 2008 R2


Instalar Laravel en un ambiente Windows no es muy difícil ya que herramientas como Laragon te permiten facilitar esa tarea, se complica un poco al manejar la conexión a base de datos con una base de datos de MS SQL Server.
En este breve post voy a explicar los pasos que tuve que realizar para que Laravel y Sql Server trabajaran correctamente.

Requerimientos:
Laragon 3.x.
Motor de Base de datos Sql Server 2008 R2.
Conocimientos de Laravel.
Aplicación base de Laravel.


Laragon 3.1.9 viene con PHP 7.1.14. Y la base de datos que tengo es Microsoft SQL Server 2008 R2.
Es necesario descargar de la pagina de Microsoft los drivers para PHP y el driver ODBC. Descargar de aquí:

Dependiendo de la versión que tengas los drivers pueden variar. Para más info ver la pagina de requerimientos para los drivers de SQL Server para PHP:

Al instalar/extraer los drivers de PHP nos pide una ubicación, yo he seleccionado cualquier carpeta, enseguida copie dos drivers a mi carpeta de laragon donde están las extensiones de php: “D:\programs\laragon\bin\php\php-7.1.14-Win32-VC14-x64\ext” (la ubicación puede variar dependiendo de la instalación de Laragon).
​Para mi caso copie los siguientes dos archivos:

php_sqlsrv_71_ts_x64.dll
​php_pdo_sqlsrv_71_ts_x64.dll

Ver el SQLSRV_Readme en la carpeta donde se extrajeron los drivers.
Yo elegí estos dos dado que en dicho archivo dice que si tienes la dll php7ts.dll son los dos anteriores.
Posteriormente habilitar los dos drivers en el menu de PHP de Laragon.


 

Es hora de probar que todo lo que hicimos funciona.

En tu aplicación de Laravel previamente creada hay que configurarla para que apunte a la base de datos de MS SQL Server 2008.

En el archivo .env vamos a cambiar lo siguiente, asegurandonos que aplique a nuestro caso. Los datos de tu aplicación van a ser diferentes a la mía así que hay que cambiarlos según tu caso.

// Indica el tipo de conexión (driver) al servidor de base de datos
DB_CONNECTION=sqlsrv
// La IP o nombre de host del servidor de base de datos.
DB_HOST=IP_SERVIDOR_SQL
// El puerto del servidor MS SQL Server
DB_PORT=1433
// El nombre de la base de datos
DB_DATABASE=nombre_base_de_datos
//El usuario de la base de datos
DB_USERNAME=nombre_de_usuario
//El password de la base de datos
DB_PASSWORD=password

Cabe señalar que la base de datos debe ser creada desde el SQL Mangement Studio ya que Laravel no puede crearla.

Ejecuta el siguiente comando en la terminal en la carpeta de tu proyecto:

php artisan make:auth

El comando anterior crea las vistas, modelos y controladores necesarios para la autenticación.

Por último corre las migraciones, donde nos daremos cuenta que todo lo que hicimos funciona.

php artisan migrate

Si todo sale bien veras que las migraciones han corrido sin errores.

En este punto si no tuviste errores al ejecutar las migraciones ya se puede empezar a trabajar con la nuestra aplicación guardando datos en SQL Server.
Vamos a crear un nuevo usuario en nuestra aplicación para ver que sea posible esto.En nuestra aplicación dar click en register. 

Luego rellenar los datos solicitados para crear un usuario nuevo.

En mi caso me marco un error por el tipo de formato en que SQL Server guarda la fechas.

Para corregir esto hay que especificar en el modelo (User.php) como queremos que se guarden las fechas. Vamos a agregar en el modelo User.php lo siguiente:

protected $dateFormat = 'Y-d-m H:i:s';

Ya con eso podemos crear un usuario.

Laravel viene por defecto con la zona horaria UTC, yo lo cambio a mi zona horaria (México) para que las fechas no sean incorrectas. Abrir el archivo app.php ubicado en la parte conf de nuestra aplicación y cambiar el valor de timeZone:

'timezone' => 'America/Mexico_City';

Puede ser que no sepas cual es el valor de debes poner, en el manual de PHP puedes ver la lista de valores que puede tener según tu zona horaria.

Espero que esta guía sea de ayuda.

Saludos.

 

Añadir nuevo comentario