Icono del sitio Carlos Herrera

Cómo migrar de Laravel 4 a Laravel 5

Esta es una pequeña guía de como poder migrar un proyecto de Laravel 4 a Laravel 5. Esta nueva versión tiene cambios muy significativos y su migración puede ser algo tediosa. Con estos pasos que he recopilado posiblemente te ahorres más de un dolor de cabeza.

Pasos

Actualizar composer en caso que no lo tengas actualizado
composer self-update

Sigue las indicaciones de migración que hay en la documentación de laravel

http://laravel.com/docs/5.0/upgrade

Cuando hayas seguido los pasos te darás cuenta que sólo es el inicio de los problemas, pero no te precocupes, he puesto algunos puntos que te aclararán las dudas:

 

Los NAMESPACES.

Nueva funcionalidad son los namespaces de PHP en laravel. Esto generará conflictos con clases públicas que puedas llamar o clases que puedan ser implementos de clases bases en PHP. Para ello debes ver los ejemplos  de WelcomeController.php y  User.php para que te sirva de guía de como llamar los namespaces en tus archivos php.

La configuración de la base de datos.

Los datos de conexión a la base de datos están ahora en un archivo llamado .env en la raiz de todo el proyecto, no será necesario modificar el archivo config/database.php. MySQL está por defecto.

Las Clases

Por ejemplo si creo una funcion en controllers que sea implements Iterator en las primeras lineas debo colocar

uses Iterator

Si no lo haces buscará la clase Iterator dentro de Laravel (especificamente en Controllers) y dará error.

Problema con Eloquent

No he logrado que funcione las llamadas de los modelos eloquent de Laravel 4 a Laravel 5

Asi que lo he reemplazado por la llamada DB:: (query Builder)
más info http://laravel.com/docs/5.0/queries

PSR-4

Nueva forma de distribuir las carpetas en laravel
Ubicaciones importantes

Routes.php
Laravel4= app/
Laravel5= app/Http/

Carpeta Controllers
Laravel4 = app/controlers
Laravel5 =app/Http/controlers

Carpeta Views
Laravel4= app/views
Laravel5= resources/views

Carpeta Models
Laravel4= app/Models
Laravel 5: ya no existe. el modelo de ejemplo user.php está en la raiz de app.

A mi esto no me parece bien. En la documentación de Actualización dicen que nos tomemos la libertad de crear una carpeta Models en app y eso he hecho y he movido Users.php a la carpeta Models

app/Models

Pero he cambiado el namespaces de user
antes: namespace App;
ahora: namespace AppModels;

Las clases de los Modelos ya no dependen de eloquent sino de Models
laravel 4: class nombre_de_clase extends Eloquent
laravel 5: class nombre_de_clase extends Model

Blade e Iluminate

Algunas funciones de iluminate ya no estan incluidas por defecto en laravel5. Para agregar algunas funciones pasadas de Iluminate hay que hacer lo siguiente

en config/app.php

en ‘aliases’ agregar estas lineas

en ‘providers’ agregar estas lineas en el ultimo iluminate

'IlluminateHtmlHtmlServiceProvider',

en composer.json agregar lo siguiente en “require”

luego en la consola escribir:
[apache]composer update[/apache]
y luego
composer dump-autoload

Luego ir a las plantillas Blade:

reemplazar los {{HTML:: … }} por
{!!HTML:: … !!}

y
{{Form:: … }} por {!!Form:: .. !!}

 

Espero que sirva de ayuda!, No olvides compartir!!!

[cl-popup title=”Suscríbete a nuestra Newsletter” show_on=”load” size=”s” animation=”fadeIn”]

Suscríbete a nuestra Newsletter

[mc4wp_form id=”5076″] [/cl-popup]

Salir de la versión móvil