Migraciones en Artisan
Clase 9 de 25 • Curso de PHP con Laravel
Contenido del curso
José Tuzinkievicz
Iván Andrés Pineda Salazar
Kevin Giovanni Cano Blanco
Japheth Calzada López
Daniel Muñoz Martín
IRIDIAN GUADALUPE CARRERA MONDRAGÓN
Luis Alberto Burgos Vilca
Carlos Eduardo Gomez García
Ricardo Antonio Medina Vallecilla
José Jesús Quilarque
Diego Quiroz
Raul Andres Castro Devia
Wilson Alvaro Leonardo Tahuico
Gerardo Antonio Gerónimo Vasconcelos
Joel Sanchez
Luis Suárez
Joel Sanchez
Danniel Sequera
Diego Forero
Jhonathan Alfonso
Paul Cortes
Jimmy Buriticá Londoño
Enrique Garcia Stave
Salvador Pallares
Juan Ricardo Cardona Álvarez
Juan Castro
Andrés Giovanni Vanegas Castañeda
ALEXANDER ECHEVERRY TORRES
Jhonathan Alfonso
Jaime Fernando Condori Loza
Manuel Ojeda
Mariley Erika Condori Calla
JuanFe Peralta
Alexandre CR
Luis David Moncada Tarazona
Cristian Henao
Juan Ortega
Joalin Pineda
Carlos Valdivia L.
Elías Camilo Martínez Salcedo
Para controlar la cantidad de migraciones que se revierten en un rollback se debe usar el parámetro step, por ejemplo para revertir 3 migraciones:
php artisan migrate:rollback --step 3
Gracias por tu comentario de hace 4 años, para complementar, se desharán las migraciones más recientes en primer lugar las mas antiguas se mantienen.
Ologron, esa no me la sabía, gracias por el dato José del pasado
😃 muy bien con esta clase promocionar el curso de Laravel, le debo mucho al curso anterior me ayudo a conseguir un trabajo en Laravel ( aunque no tenia experiencia) poder aprenderlo mas facilmente.
Me ha gustado la actualización, muy bien el profe
Enhorabuena por ese trabajo ! Eres el claro ejemplo de que el esfuerzo merece la pena sin duda 😉
Yo no podía migrar las tablas ni hacer rollback, pero con esto Sí me funciono:
en mi archivo de database.php que se encuentra dentro de la carpeta config reemplace la siguiente información en el apartado de mysql (ya que es la tabla que estoy utilizando):
antes lo tenia así:
'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci',
Ahora lo tengo así y ya funciona :D :
'charset' => 'utf8', 'collation' => 'utf8_unicode_ci',
-pdt:No dejen espacios entre las comillas simples y la info.
gracias por el dato, las diferencias entre: utf8mb4 y utf8, Dios los bendiga estimados
Una mejor forma de hacer esto es con el siguiente comando:
php artisan make:migration create_expense_reports_table
A simple vista solo parece que cambia el órden en el nombre de la tabla, pero la realidad es que, Laravel maneja una convención en la cual Laravel es capaz de detectar el nombre de tu tabla siempre y cuando lo pongas entre las palabras "create_" y "_table" es decir, sería algo así:
create_[cualquier_nombre]_table
Con eso ya no es necesario agregar la bandera "--create" son solo mejores prácticas a tener en cuenta para hacer todo más sencillo:D
solucion al error de migracion
Nota:
En Laravel 7, uno de los métodos para solucionar el error del length en la migración sin cambiar el limite global es estableciendo un límite sólo a los strings que dan el error en dicha migración. Para lograrlo, en la función String le pasamos el límite de caracteres como 2do parámetro.
$table->string('email', 45)->unique();
Mis migraciones no funcionan me da el siguiente error
Illuminate\Database\QueryException : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))
crea las tablas pero cuando aplico el comando php artisan migrate:status me indica no de los 3 archivos :( :( :(
Hola, puede arreglarlo de dos maneras, la primera es la siguiente:
$table->string('email',170)->index();
y la otra es cambiando el tipo de collation en
config ->database.php y alli buscas esto:
'charset' => 'utf8mb4',//cambia a utf8 'collation' => 'utf8mb4_unicode_ci', // cambiar autf8_unicode_ci
Saludos
Ese error está relacionado con el motor de base de datos que usas, por ejemplo con las últimas versiones de MySQL y MariaDB no me pasa; pero con PosgreSQL y MySQL 5.* sí me sucede. El error ocurre cuando creas un índice en un campo que admite demasiados caractéres. Por defecto, si se omite el tamaño en los campos de texto, se crean con el máximo que si no me equivoco es de 255 caractéres.
Hola , tengo un problema. Ya busque por muchos lados como solucionarlo.
SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table_schema = cursolaravel and table_name = migrations and table_type = 'BASE TABLE') No me puedo conectar a la base de datos.
Hola no se mucho de Laravel estoy comenzando pero algo así me sucedió el otro día.
Lo que sucede es que no esta leyendo bien la contraseña a tu base de datos por algún motivo.
Debes limpiar el cache y en mi caso tuve que cambiar la contraseña de mi usuarios en la base de datos y posteriormente cambiarla también en .env
Lo primero es el cache te dejos unos comando que pueden ayudarte php artisan route:cache php artisan route:clear php artisan config:cache php artisan config:clear php artisan optimize
Lo que pasa no es algo típico para Laravel el inconveniente pasa siempre que no puedas acceder a sql Bueno mysql en este caso.
Cambia la clave de tu usuarios en la base de datos y en .env ... migrate de nuevo y suerte ... me cuentas como te fue.
Hola Unnicksimple, Una duda como ingresas a la base de dato para cambiarle la contraseña a los usuarios si no te deja ingresar, en mi caso a mysql workbench?
¿Estas migraciones contra que base de datos van? ¿Contra la de la máquina virtual?
Afectan al servidor de base de datos que este configurado en la conexión.
Hola Danniel, estas migraciones van a la base de datos que se creo para el proyecto.
Depende de que tabla consultes o modifies es lo que hacemos con el ORM Eloquent.
Excelente guía de migraciones con artisan
Muy interesante lo que se puede hacer con las Migraciones en ++Laravel++, les comparto las líneas de código:
php artisan make:migration create_expense_reports_table --create=expense_reports
php artisan migrate php artisan migrate:rollback php artisan migrate:fresh
Apuntes: Al momento de crear una migración es importante colocarle al archivo a crear, un nombre descriptivo. Ejemplo:
Hola, No se ve este video !!! Estoy en movil, será x q es de YouTube?
Sí, es de Youtube.
Puedes verla directamente desde YouTube: https://youtu.be/NW71C3mHWIU.
Para que se dejan las migraciones en batch 1? eso importa? no tengo claro que hace el batch.
El batch es como la versión de la tabla en cada uno de los cambios que se le van haciendo
Hola Andres, los batch son los lotes de migraciones, Laravel lo organiza así para saber en que lote se hicieron que conjunto de migraciones.
Cuando haces el comando:
php artisan migrate:roolback te devuelve al lote anterior de migraciones.
Tengo la siguiente duda: Una ves que creo y ejecuto la Migracion con los campos requeridos para una determinada tabla, por ejemplo usuarios, y ya se agregan registros a esa tabla, como puedo hacer si luego es necesario incluir un campo en la tabla usuarios, pero sin perder los registros ya almacenados, que se debe hacer en estos casos??? gracias.
Creas otra migración usando
php artisan make:migration alter-users-table
Y dentro de la migración creada agregas el siguiente código:
Schema::table('users', function (Blueprint $table) { // Aquí agregas el tipo de dato nuevo });
Y ya que tengas la migración lista corres php:artisan migrate y el campo se añadirá sin problemas.
No puede ver este video, me aparece una imagen diciendo "Se ha restablecido la conexion" :(
Esta clase es una clase pública, así que también puedes verla desde YouTube, aquí te dejo el enlace: https://www.youtube.com/watch?v=NW71C3mHWIU&feature=emb_title. :)
¿si ejecuto migrate:fresh y tengo datos en las tablas, estos se borran permanentemente?
Si, el migrate:fresh borra todas las tablas y luego las vuelve a crear.
Si, para recuperar la información debes hacer previamente un backup de la base de datos directamente.
Este vídeo no carga :-(
Hola! Acabo de abrir la clase y si me carga. Puedes revisar que tu conexión a internet esté correcta e intenta recargar la página. También puedes verlo directamente en YouTube acá.
En laravel 6, tengo el archivo config/database.php y el archivo .env, en cual de los dos configuro la BD de la aplicación?...para que sirve cada uno?
Tu archivo .env define todas las variables de entorno de tu aplicación, mientras que tu archivo database.php es un archivo de configuración donde puedes definir por ejemplo una o mas conexiones para tu aplicación, cual de ellas deberia usar por defecto etc.
Si tu aplicación no es muy compleja puedes configurar el driver, host, user y password de tu BD en las variables de entorno ".env"
DB_CONNECTION={DRIVER} DB_HOST={HOST} DB_PORT={PORT} DB_DATABASE={DATABASE} DB_USERNAME={USER} DB_PASSWORD={PASSWORD}