CRUD en Laravel listar registros

CRUD en Laravel listar registros

Hola, ¿Qué tal? nuevamente, continuando con este curso de laravel,  hoy  veremos el CRUD en Laravel listar registros. En clases anteriores, exploramos la creación de migraciones y la interacción con los modelos. Ahora, nos enfocaremos en la lógica del negocio para obtener información de la base de datos y presentarla en nuestras vistas. Abordaremos la parte del frontend, el lado del cliente, utilizando Blade. La complejidad y el desafío se intensifican, ¡así que prepárense para un recorrido emocionante!

¡Empecemos!

CRUD (Create, Read, Update and Delete)

CRUD (Create, Read, Update and Delete) Crear, Leer, Actualizar y Eliminar, es un acrónimo que representa las cuatro operaciones básicas utilizadas en la gestión de datos y en el desarrollo de software en general.

  • Create (Crear): Involucra la creación de nuevos registros en la base de datos.
  • Read (Leer): Consiste en la recuperación o lectura de información existente de la base de datos.
  • Update (Actualizar): Implica la modificación de registros existentes en la base de datos. 
  • Delete (Eliminar): Se refiere a la eliminación de registros o datos existentes en la base de datos.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Controladores (Controller)

Los controladores son clases destinadas a gestionar las solicitudes HTTP y orquestar la lógica de la aplicación. Su función principal es ejecutar la lógica del negocio y los controles necesarios en respuesta a las solicitudes.

Si recordamos las anteriores clases creamos tres modelos “Alumno”, “Profesor” y “Curso” y que estas se encuentran relacionadas con las tablas de nuestra base de datos. Del mismo modo crearemos los controladores.

Crear los controladores

Comenzamos por crear el controlador “ProfesorController”, para este propósito utilizaremos Artisan, escribimos el siguiente comando:

php artisan make:controller ProfesorController --resource

El comando genera una clase “ProfesorController” dentro del directorio “app/Http/Controllers”. Al analizar la clase, notaremos que ha sido creada con todos los métodos fundamentales necesarios para llevar a cabo las operaciones básicas de un CRUD.

Ahora empezamos a meter código a nuestra aplicación, lo primero es importar el modelo “Profesor” a la clase.

use App\Models\Profesor;

Dentro del método “index”, utilizaremos Eloquent ORM para obtener todos los registros de la tabla “profesores” y almacenarlos en un objeto llamado $profesores. A continuación, procederemos a devolver dicho objeto a una vista llamada “index” que crearemos posteriormente.

$profesores = Profesor::all();
return view('profesores.index', ['profesores' => $profesores]);

Realizamos el mismo proceso para crear el controlador “AlumnoController”, desde Artisan escribimos lo siguiente:

php artisan make:controller AlumnoController --resource

Importamos el modelo “Alumno” a la clase.

use App\Models\Alumno;

Con Eloquent vamos a obtener a todos los alumnos registrados en la base de datos. Seguidamente, retornaremos el objeto $alumnos a la vista que crearemos posteriormente.

$alumnos = Alumno::all();
return view('alumnos.index', ['alumnos' => $alumnos]);

Por último, creamos el controlador “CursoController”, desde artizan escribimos lo siguiente:

php artisan make:controller CursoController --resource

Importamos el modelo “Curso” a la clase.

use App\Models\Curso;

De acuerdo con nuestro modelo entidad-relación la tabla “Cursos” está relacionado con ambas tablas “Profesores” y “Alumnos”, por lo que en nuestra vista vamos a mostrar todos los cursos y que profesor está dictando este curso (esto lo obtendremos gracias a las relaciones creados en los modelos).

$cursos = Curso::all();
return view('cursos.index', ['cursos' => $cursos]);

Hasta aquí ya tenemos todo listo en nuestros controladores. Seguidamente, empezaremos a crear las rutas.

Rutas (route)

Las rutas se encargan de dirigir las solicitudes de los usuarios a la lógica correspondiente en la aplicación, tomar acciones y dar una respuesta.

A continuación, procederemos a establecer las rutas en el archivo web.php, ubicado en el directorio “/routes”. Este archivo se encarga de gestionar las rutas web en nuestra aplicación. En primer lugar, realizaremos la referencia a los controladores que hemos creado anteriormente.

use App\Http\Controllers\ProfesorController;
use App\Http\Controllers\AlumnoController;
use App\Http\Controllers\CursoController;

Seguidamente, vamos a configurar las rutas de tipo “GET” que apuntarán al método index de nuestros controladores. Finalmente, asignaremos un nombre único a cada una de estas rutas para facilitar su identificación.

Route::get('/profesores', [ProfesorController::class, 'index'])->name('profesores.index');
Route::get('/alumnos', [AlumnoController::class, 'index'])->name('alumnos.index');
Route::get('/cursos', [CursoController::class, 'index'])->name('cursos.index');

Eso es todo por el momento en las rutas, ahora empezaremos a crear las vistas.

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

Vistas Blade

Ahora nos toca ver toda la parte del frontend de la aplicación, la interfaz visual que interactúa con el usuario final. En esta etapa, exploraremos tecnologías como HTML, CSS y JavaScript (por el momento, no profundizaremos en estas tecnologías, ya que nos enfocaremos principalmente en aprovechar las funcionalidades que Laravel nos proporciona. En futuras ediciones, abordaremos de manera más detallada la parte del frontend.).

Crear la vista profesores

Empezaremos por crear la vista para la funcionalidad de “profesores”, lo primero que haremos será crear una carpeta llamada profesores en el directorio “resources/views”, dentro de la carpeta creamos un archivo llamado “index.blade.php”

Si recordamos en la clase controlador “ProfesorControlador” en el método index retornamos a la vista una variable $profesores que tiene una colección de datos. Asimismo Blade nos ofrece directivas que podemos utilizar como el bucle “@foreach” que recorre uno a uno la colección, para imprimir la variable en la vista blade utilizar “{{ }}” esto indica a que el contenido será impreso. Todo esto lo utilizaremos en una plantilla HTML básica.

<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
        <title>Curso de laravel</title>
    </head>
    <body>
        <h2>Listado de Profesores</h2>
        <table>
            <tr>
                <th>Nombre y Apellido</th>
                <th>Profesión</th>
                <th>Grado Academico</th>
                <th>Teléfono</th>
            </tr>
            @foreach ($profesores as $profesor)
            <tr>
                <td>{{ $profesor->nombre_apellido }}</td>
                <td>{{ $profesor->profesion }}</td>
                <td>{{ $profesor->grado_academico }}</td>
                <td>{{ $profesor->telefono }}</td>
            </tr>
            @endforeach
        </table>
    </body>
</html>

Para poder probar nuestra aplicación iniciamos el servidor local de laravel.

php artisan serve

Si todo está bien nos mostrará en nuestro navegador  en la ruta  http://127.0.0.1:8000/profesores una pantalla con el listado de todos los profesores, para mejorar el diseño de la vista introduciremos un poco de código css a nuestro archivo index.

<style>
    body {
        margin: auto;
        padding: 50px;
    }
    table {
        border-collapse:collapse;
        width: 100%;
    }
    table, td, th {
        border: 1px solid black;
    }
</style>
 

Actualizamos nuestro navegador para reflejar los cambios.

Vistas ver Blade laravel

Crear la vista alumnos

Realizaremos el mismo proceso en nuestra vista “alumnos”. Empezaremos por crear la carpeta “alumnos” y dentro de este creamos un archivo llamado “index.blade.php”, introducimos el código de la vista alumnos que es prácticamente similar a la vista de profesores, al finalizar también añadimos el código CSS para mejorar un poco el diseño de la vista.

<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
        <title>Curso de laravel</title>
    </head>
    <body>
        <h2>Listado de Alumnos</h2>
        <table>
            <tr>
                <th>Nombre y Apellido</th>
                <th>Edad</th>
                <th>Teléfono</th>
                <th>Dirección</th>
            </tr>
            @foreach ($alumnos as $alumno)
            <tr>
                <td>{{ $alumno->nombre_apellido }}</td>
                <td>{{ $alumno->edad }}</td>
                <td>{{ $profesor->telefono }}</td>
                <td>{{ $profesor->direccion }}</td>
            </tr>
            @endforeach
        </table>
    </body>
</html>

Para verificar si todo está en orden nos vamos a nuestro navegador nuevamente y en la ruta http://127.0.0.1:8000/alumnos veremos el listado de alumnos.

Crear la vista cursos

En el caso de las vistas “cursos” es un poco diferente  por las relaciones que tiene con las demás tablas en la base de datos. Lo primero es crear la carpeta “cursos” y dentro de este creamos el archivo “index.blade.php”, en el objeto $cursos que está retornando a la vista es una colección, que por las relaciones realizadas en los Modelos podemos acceder a los datos de las tablas “profesores” y “alumnos”,  al finalizar también añadimos el código css para mejorar un poco el diseño de la vista.

<!DOCTYPE html>

<html>
    <head>
        <meta charset="utf-8">
        <title>Curso de laravel</title>
    </head>
    <body>
        <h2>Listado de Cursos</h2>
        <table>
            <tr>
                <th>Materia</th>
                <th>Nivel</th>
                <th>Horas Academicas</th>
                <th>Profesor</th>
                <th>Alumnos</th>
            </tr>
            @foreach ($cursos as $curso)
            <tr>
                <td>{{ $curso->materia }}</td>
                <td>{{ $curso->nivel }}</td>
                <td>{{ $curso->horas_academicas }}</td>
                <td>{{ $curso->profesor->nombre_apellido }}</td>
                <td>
                @foreach($curso->alumnos as $alumno)
                    {{ $alumno->nombre_apellido }} <br>
                @endforeach
                </td>
            </tr>
            @endforeach
        </table>
    </body>
</html>

Hasta aquí la clase de hoy CRUD en Laravel listar registros, en la siguiente clase veremos más acerca de las plantillas blade de Laravel.

Recuerda que puedes descargar el código fuente de esta clase y todas las demás  clases en el repositorio de GitHub totalmente gratis.

¡Te espero en la siguiente clase!

Saludos y éxitos.

Victor Peña

Victor Peña

Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.

1 comentario en “CRUD en Laravel listar registros”

  1. Pingback: CRUD en Laravel crear registros - Norvic Software

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *