A partir de Laravel 5.5 tenemos disponible un nuevo comando de artisan para trabajar con la base de datos usando las migraciones, el cual nos ayudará a evitar problemas o conflictos en la base de datos que se presentan a menudo cuando usamos migrate:refresh
luego de cambiar nuestras migraciones durante el desarrollo de una aplicación.
Notas
Por Clemir Rondón.
Para trabajar con este comando debemos primero crear y configurar una base de datos para la aplicación. Primero la creamos con cualquier manejador de base de datos como phpMyAdmin, Sequel Pro, etc. o simplemente desde consola por medio de MySQL.
Luego puedes configurar las credenciales en el archivo de variables de entorno .env que se encuentra en la raíz del proyecto, agregando los datos a las variables DB_DATABASE
, DB_USERNAME
y DB_PASSWORD
.
Para crear una nueva migración ejecutamos, por ejemplo:
php artisan make:migration create_profiles_table
Esta es otra novedad que trae Laravel 5.5 pues ya no se necesita especificar el nombre de la tabla de base de datos a crear con la opción --create
, siempre y cuando, el nombre de la migración tenga el patrón create_nombre_tabla_table
. Así, Laravel automáticamente reconoce el nombre de la tabla a partir del nombre de la migración y nos evita tener que escribir algo como: php artisan make:migration create_profiles_table --create=profiles
Puedes mirar el Pull Request que incluye esta funcionalidad en: https://github.com/laravel/framework/pull/20032
Ahora con el nuevo comando migrate:fresh
puedes volver a ejecutar las migraciones sin necesidad que Laravel ejecute el método down
de cada migración (ésta es la finalidad del comando migrate:refresh
), sino que simplemente elimina todas las tablas y luego vuelve a ejecutar las migraciones. Este comando es útil para omitir los conflictos producidos por cambios en las migraciones y lo que ya está definido en la base de datos. De esta manera si estás en la fase de diseño de la base de datos ahorrarás algo del tiempo que empleabas en resolver estos conflictos (por ejemplo eliminando todas las tablas manualmente antes de re-ejecutar migrate:refresh
).
Podemos además pasarle las opciones:
--database
para especificarle la base de datos en la que queremos se ejecute el comando, definida en el archivo config/database.php en la clave connections
--force
para forzar ejecutar el comando cuando se está en ambiente de producción.
--seed
para que adicionalmente se ejecuten los seeders.
--path
para indicar la ubicación de los archivos de migración.
--seeder
para indicar la clase Seeder que cumple la función de ser como la clase DatabaseSeeder
, es decir, que agrupa los seeder que queremos que se ejecuten.
Puedes ver el commit realizado para añadir este comando en: https://github.com/laravel/framework/commit/f6511d47
Material relacionado
- Creación de tablas con el sistema de migraciones de Laravel
- Modificando migraciones en Laravel
- Cómo generar migraciones de una base de datos existente
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
Lección anterior Render Mailables en Laravel 5.5 Lección siguiente Nuevo comando make:factory en Laravel 5.5