Laravel 5.4 #3 : Controladores, vistas, modelos y migraciones

En esta entrada lo que vamos a hacer va a ser conectar Laravel a la base de datos que crearemos, crear un modelo y utilizarlo y mostrar los resultados de una consulta a la base de datos en la vista.

Crear base de datos con PHPMyAdmin

Crear una base de datos con PHPMyAdmin es muy simple. Simplemente tenemos que entrar en localhost/phpmyadmin e ir al botón Nueva está en el sidebar de la izquierda. Nos llevará a otra página, ponemos el nombre de nuestra base de datos y el cotejamiento y le damos a crear. Yo he creado una con el nombre blog.

 

Conectar Laravel con nuestra base de datos

Deberemos abrir el archivo .env que hay en la raíz y debemos modificar a partir de la línea 8. En mi caso queda así:

 

Crear primer modelo

Como vamos a aprovechar el controlador que creamos anteriormente, voy a crear un modelo de Post. Puedes crearlo manualmente o por la línea de comandos, yo lo voy a crear por la línea de comandos.

Vamos a la raíz de nuestro proyecto y ejecutamos este comando, que lo que hará será crearnos el modelo y su archivo de migración. Si no queremos el archivo de migración quitamos -m:

 

Migraciones

Las migraciones son muy útiles ya que te permiten crear la estructura de tablas y columnas de la base de datos sin tener que tocar una sola línea de SQL. Simplemente ejecutando un comando.

Vamos a crear la migración para la tabla posts.

En este enlace puedes encontrar todos los tipos de campos que permite Laravel.

Para ejecutarla:

Si todo sale bien, nos saldrá un mensaje conforme ya están creadas.

Añadimos datos a mano en la tabla posts desde el propio PHPMyAdmin.

 

Mostrar datos de la base de datos en la vista

Abrimos el controlador PostsController.php y vamos a modificarlo.

Hemos añadido un nuevo método que coge todos los posts que hay en la base datos. El otro simplemente coge uno a partir del id, si no existe retorna un error 404. Esto es gracias al ORM de Laravel, Eloquent. Más adelante profundizaremos en él.

También tenemos que añadir la nueva ruta.

Y las vistas:

Y ya mostramos todos los posts existentes en la base de datos si accedemos a  localhost:8000/posts .

En la siguiente entrada vamos a ver como crear contenido a partir de un formulario y validar estos datos, para que se guarde en la base de datos lo que nosotros queremos.


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

10 comentarios en “Laravel 5.4 #3 : Controladores, vistas, modelos y migraciones

  1. Excelente tutorial muy bien explicado todo, estoy siguiendo todo paso a paso .. pero me encontré con un problema , estoy en la parte de crear la tabla desde el código generado en migrations, está tal cual, pero al momento de dar el comando en cmd «php artisan migrate» creó una tabla users , después lo ejecuté nuevamente y dice que la tabla users ya existe, pero no es la tabla post que quiero crear. no sé que estaré haciendo mal.
    De nuevo mil gracias por el tutorial.

  2. Ya lo solucioné, quité de la carpeta database/migratios .. los dos archivos migrations que se encontraban por defecto user y password y el de post, creé de nuevo la tabla con php artisan make:migration create_table_posts_table .. le di nuevamente al comando php migrate artisan y funcionó.
    De nuevo mil gracias por estos tutoriales . Está excelente!

  3. Que tal he realizado todo al pie de la letra pero al ejecutar:

    localhost:8000/posts

    Me muestra este mensaje:

    Illuminate \ Database \ QueryException (1045)
    SQLSTATE[HY000] [1045] Access denied for user ‘homestead’@’localhost’ (using password: YES) (SQL: select * from posts)
    Previous exceptions
    SQLSTATE[HY000] [1045] Access denied for user ‘homestead’@’localhost’ (using password: YES) (1045)

    Esto a pesar de que ya configure el archivo .env , ¿ Se tiene que configurar algún otro archivo extra?

    Gracias y Saludos!!

    1. Hola Raúl!
      Muchas gracias por tu comentario.

      Ese error es un error de conexión a la base de datos. Debido a que no estás poniendo bien los datos de conexión en el .env. Revisa que estén bien y una vez estén bien, ese error debería desaparecer.

      Un saludo! ?

  4. Hola buenas tardes, la información de conexión a la base de datos la tengo bien ya que tuve que configurar el archivo .env para poder crear de la migración de la tabla posts:

    php artisan migrate

    1. Hola Raúl!
      Has probado a cambiar localhost por 127.0.0.1 en el .env?

      Te dejo aquí unos enlaces que te podrían ser de ayuda:
      https://stackoverflow.com/questions/29756194/access-denied-for-user-homesteadlocalhost-using-password-yes
      https://stackoverflow.com/questions/20723803/pdoexception-sqlstatehy000-2002-no-such-file-or-directory

      Has probado alguna de las soluciones que proponen?
      Dime algo si te han servido o si no cómo lo has resuelto para que a otros usuarios les pueda ayudar tu solución.

      Muchas gracias! Espero que te ayude.?

      Un saludo!

      1. Que tal gracias por tu ayuda, en los foros que me enviaste vi que a parte de configurar correctamente la conexión a la base de datos, se debe de detener la ejecución del servidor de Laravel y volverlo a ejecutar:

        php artisan serve

        Saludos!!!

Deja una respuesta

  Acepto la política de privacidad