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.
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.
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.

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
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.
Pingback: CRUD en Laravel crear registros - Norvic Software