Mostrar una lista de resultados desde una base de datos en Laravel
Vamos a mostrar una lista de resultados desde una base de datos en Laravel, obteniendo un listado de los mensajes que hemos introducido en la entrada anterior, de este modo vamos generando nuestro CRUD.
Lo primero que vamos a hacer es crea runa ruta en el archivo de rutas routes>>web.php añadiendo la siguiente línea:
Route::get('mensajes', 'MensajesController@index');
Como ya sabemos le estamos diciendo a Laravel que cuando el usuario acceda a la url mensajes se ejecute el método index de controlador MensajesController.
De este modo está claro que tenemos que crear la acción index en el controlador que está en app>>Http>>Controllers>>MensajesController.php de la siguiente forma:
public function index() { $mensajes = Mensaje::all(); //return view('mensajes.index', compact('mensajes')); return view('mensajes.index')->with('mensajes',$mensajes); }
Vemos que usamos Mensaje::all() para obtener todos los mensajes que hay en la base de datos y los almacenamos en una variable llamada $mensajes.
Después devolvemos la vista mensajes.index y usamos el método compact que convierte el resultado en un array que le pasamos a la vista.
O bien los hacemos utilizando with como aparece en el segundo return, pudiendo hacerlo de las dos formas.
Con esto nos falta crear la vista que quedaría de la siguiente forma:
@extends('layouts.app') @section('title', 'Contact') @section('content') <div class="container col-md-8 col-md-offset-2"> <div class="panel panel-default"> <div class="panel-heading"> <h2>Mensajes</h2> </div> @if ($mensajes->isEmpty()) <div>No hay Mensajes</div> @else <table class="table"> <thead> <tr> <th>ID</th> <th>Título</th> <th>status</th> </tr> </thead> <tbody> @foreach($mensajes as $mensaje) <tr> <td>{!! $mensaje->id !!}</td> <td>{!! $mensaje->titulo !!}</td> <td>{!! $mensaje->status ? 'Pendiente' : 'Respondido' !!}</td> </tr> @endforeach </tbody> </table> @endif </div> </div> @endsection
Lo que vemos es que aparece un condicional if que determina sin $mensajes esta vacío o si tiene contenido.
En caso de que no contenga nada muestra un texto y si tiene contenido pinta una tabla.
Dentro de esta tabla vemos que hay un foreach que recorre cada uno de los mensajes, recuperando su información.
El status los comprobamos por medio de un operador ternario.
De esta forma recibimos un resultado similar a este en el cual se muestra la lista de resultados desde la base de datos: