CursosEmpresasBlogLiveConfPrecios

Migraciones en Artisan

Clase 9 de 25 • Curso de PHP con Laravel

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Intro y caracteristicas de Laravel

    Intro y caracteristicas de Laravel

    03:09 min

Fundamentos

  • 2
    Instalación de Laravel

    Instalación de Laravel

    06:48 min
  • 3
    Primer ruta en laravel

    Primer ruta en laravel

    06:14 min
  • 4
    Cómo funciona Blade

    Cómo funciona Blade

    08:30 min
  • 5
    Controladores en Laravel

    Controladores en Laravel

    07:23 min
  • 6
    Request

    Request

    06:10 min
  • 7
    Configuración de laravel

    Configuración de laravel

    05:07 min

Bases de Datos

  • 8
    Cómo funcionan las Migraciones de DB

    Cómo funcionan las Migraciones de DB

    07:00 min
  • 9
    Migraciones en Artisan

    Migraciones en Artisan

    Viendo ahora
  • 10
    Modelos con Eloquent

    Modelos con Eloquent

    06:19 min
  • 11
    Trabajando con un Modelo

    Trabajando con un Modelo

    07:48 min

Operaciones CRUD

  • 12
    Controladores y recursos

    Controladores y recursos

    14:08 min
  • 13
    Blade layout

    Blade layout

    05:46 min
  • 14
    Form para agregar reportes

    Form para agregar reportes

    07:35 min
  • 15
    CSRF

    CSRF

    08:21 min
  • 16
    Fake PUT/PATCH

    Fake PUT/PATCH

    10:58 min
  • 17
    Borrando reportes

    Borrando reportes

    11:21 min
  • 18
    Validaciones

    Validaciones

    12:07 min

Relaciones en bases de datos

  • 19
    Creamos la vista de reportes

    Creamos la vista de reportes

    06:44 min
  • 20
    Relaciones con eloquent

    Relaciones con eloquent

    13:17 min
  • 21
    Trabajando con relaciones

    Trabajando con relaciones

    14:35 min

Emails

  • 22
    Acción para enviar un mail

    Acción para enviar un mail

    08:32 min
  • 23
    Enviando emails

    Enviando emails

    14:04 min

Autenticación

  • 24
    Login

    Login

    09:38 min

Cierre

  • 25
    Cierre

    Cierre

    01:09 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
      José Tuzinkievicz

      José Tuzinkievicz

      student•
      hace 7 años
        Iván Andrés Pineda Salazar

        Iván Andrés Pineda Salazar

        student•
        hace 3 años
        Kevin Giovanni Cano Blanco

        Kevin Giovanni Cano Blanco

        student•
        hace 3 años
      Japheth Calzada López

      Japheth Calzada López

      student•
      hace 7 años
        Daniel Muñoz Martín

        Daniel Muñoz Martín

        student•
        hace 7 años
      IRIDIAN GUADALUPE CARRERA MONDRAGÓN

      IRIDIAN GUADALUPE CARRERA MONDRAGÓN

      student•
      hace 6 años
        Luis Alberto Burgos Vilca

        Luis Alberto Burgos Vilca

        student•
        hace 4 años
      Carlos Eduardo Gomez García

      Carlos Eduardo Gomez García

      teacher•
      hace 5 años
      Ricardo Antonio Medina Vallecilla

      Ricardo Antonio Medina Vallecilla

      student•
      hace 6 años
      José Jesús Quilarque

      José Jesús Quilarque

      student•
      hace 6 años
      Diego Quiroz

      Diego Quiroz

      student•
      hace 6 años
      Raul Andres Castro Devia

      Raul Andres Castro Devia

      student•
      hace 7 años
        Wilson Alvaro Leonardo Tahuico

        Wilson Alvaro Leonardo Tahuico

        student•
        hace 7 años
        Gerardo Antonio Gerónimo Vasconcelos

        Gerardo Antonio Gerónimo Vasconcelos

        student•
        hace 7 años
      Joel Sanchez

      Joel Sanchez

      student•
      hace 5 años
        Luis Suárez

        Luis Suárez

        student•
        hace 5 años
        Joel Sanchez

        Joel Sanchez

        student•
        hace 5 años
      Danniel Sequera

      Danniel Sequera

      student•
      hace 7 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 7 años
        Jhonathan Alfonso

        Jhonathan Alfonso

        student•
        hace 6 años
      Paul Cortes

      Paul Cortes

      student•
      hace 6 años
      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 6 años
      Enrique Garcia Stave

      Enrique Garcia Stave

      student•
      hace 6 años
      Salvador Pallares

      Salvador Pallares

      student•
      hace 6 años
        Juan Ricardo Cardona Álvarez

        Juan Ricardo Cardona Álvarez

        student•
        hace 6 años
        Juan Castro

        Juan Castro

        teacher•
        hace 6 años
      Andrés Giovanni Vanegas Castañeda

      Andrés Giovanni Vanegas Castañeda

      student•
      hace 6 años
        ALEXANDER ECHEVERRY TORRES

        ALEXANDER ECHEVERRY TORRES

        student•
        hace 6 años
        Jhonathan Alfonso

        Jhonathan Alfonso

        student•
        hace 6 años
      Jaime Fernando Condori Loza

      Jaime Fernando Condori Loza

      student•
      hace 6 años
        Manuel Ojeda

        Manuel Ojeda

        student•
        hace 6 años
      Mariley Erika Condori Calla

      Mariley Erika Condori Calla

      student•
      hace 6 años
        JuanFe Peralta

        JuanFe Peralta

        Team Platzi•
        hace 6 años
      Alexandre CR

      Alexandre CR

      student•
      hace 6 años
        Luis David Moncada Tarazona

        Luis David Moncada Tarazona

        student•
        hace 6 años
        Cristian Henao

        Cristian Henao

        student•
        hace 6 años
      Juan Ortega

      Juan Ortega

      student•
      hace 4 años
        Joalin Pineda

        Joalin Pineda

        student•
        hace 4 años
      Carlos Valdivia L.

      Carlos Valdivia L.

      student•
      hace 6 años
        Elías Camilo Martínez Salcedo

        Elías Camilo Martínez Salcedo

        student•
        hace 6 años

      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

      error en el proceso de hacer la migracion.png

      Nota:

      • Podemos hacer multiples cosas con el comando make migrations que podemos profundizar en las opciones que ofrece en la documentacion de laravel https://laravel.com/docs/5.8/migrations#tables

      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:

      • php artisan make:migration create_table_expense_reports --create expense_reports Para una mayor documentación al momento de crear una tabla, podemos irnos a la documentación de laravel con respecto a tablas y columnas. Link: https://laravel.com/docs/5.8/migrations#tables

      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}