¡Hola! ¿Cómo están? ¡Bienvenidos de nuevo! Continuando con el curso de Laravel, hoy veremos la última parte del CRUD en Laravel Ver y Eliminar registros. Con esto, consideraremos concluido el desarrollo de las operaciones CRUD (Crear, Leer, Actualizar y Eliminar) para gestionar registros en nuestra base de datos.
¡Empecemos!
Operaciones CRUD en Laravel Ver
Cuando necesitamos examinar una gran cantidad de información de un registro específico, nos viene muy bien contar con una ventana independiente que permita la visualización completa de todos estos datos.
Ahora, utilizaremos las operaciones del CRUD para visualizar la información de un registro específico de la base de datos. Utilizaremos los métodos “show” de los controladores.
Método show para la funcionalidad de Profesores
En el método “show” del controlador “ProfesorController”, utilizamos el método “findOrFail($id)” proporcionado por Eloquent. Este método recupera un registro específico de la tabla “profesores” con un identificador “$id”. Posteriormente le pasamos como parámetro a la vista.
$profesor = Profesor::findOrFail($id); return view('profesores.view', ['profesor' => $profesor]);
Método show para la funcionalidad de Alumnos
Realizamos el mismo procedimiento ahora en el controlador “AlumnoController” dentro del método “show”.
$alumno = Alumno::findOrFail($id); return view('alumnos.view', ['alumno' => $alumno]);
Método show para la funcionalidad de Cursos
Realizamos el mismo procedimiento ahora en el controlador “CursoController” dentro del método “show”. Aquí un detalle importante es fijarse las relaciones con las demás tablas, esto lo conseguiremos gracias a los métodos creados en los modelos.
$curso = Curso::findOrFail($id); return view('cursos.view', ['curso' => $curso]);
Crear las rutas Laravel (route)
Continuando, ahora vamos a definir las rutas de Laravel para el método “show” correspondientes a las funcionalidades de Profesor, Alumno y Curso dentro del archivo web.php. Para realizar estas solicitudes a los métodos de nuestros controladores, emplearemos las función “Get” de HTTP.
Route::get('/profesores/{id}/ver', [ProfesorController::class, 'show'])->name('profesores.show'); Route::get('/alumnos/{id}/ver', [AlumnoController::class, 'show'])->name('alumnos.show'); Route::get('/cursos/{id}/ver', [CursoController::class, 'show'])->name('cursos.show');
Vistas Blade para visualizar registros
Por último, lo que haremos es crear las vistas para visualizar la información de las tablas de nuestra base de datos. En una primera instancia, implementaremos la navegabilidad en las vistas de los listados correspondientes a Profesores, Alumnos y Cursos.
En el archivo index.blade.php de todas las vistas profesor, alumnos y cursos. Dentro del bucle foreach, incorporamos la ruta que permitirá la redirección al formulario de visualización.
<a href="{{ route('profesores.show', $profesor->id) }}">Ver</a>
Este proceso lo realizamos para las demás vistas index.blade.php de “Alumnos” y “Cursos”.
Formulario visualizar profesores
Primeramente, en la ruta “resources/views/profesores” creamos el archivo view.blade.php y dentro de este definimos el formulario de visualización donde cargamos los datos enviados desde el método “show” del controlador “ProfesorController”.
@extends('layout') @section('content') <h2>Ver Profesor</h2> <br> <label><strong>Nombres y Apellidos:</strong> {{ $profesor->nombre_apellido }}</label><br> <label><strong>Profesión:</strong> {{ $profesor->profesion }}</label><br> <label><strong>Grado Académico:</strong> {{ $profesor->grado_academico }}</label><br> <label><strong>Teléfono:</strong> {{ $profesor->telefono }}</label><br> @endsection
Formulario visualizar alumnos
Realizamos el mismo procedimiento en la vista ver alumnos, en la ruta “resources/views/alumnos” creamos el archivo view.blade.php y escribimos el siguiente código:
<x-layout> <h2>Ver Alumno</h2> <br> <label><strong>Nombres y Apellidos:</strong> {{ $alumno->nombre_apellido }}</label><br> <label><strong>Edad:</strong> {{ $alumno->edad }}</label><br> <label><strong>Teléfono:</strong> {{ $alumno->telefono }}</label><br> <label><strong>Dirección:</strong> {{ $alumno->direccion }}</label><br> </x-layout>
Formulario visualizar cursos
Para terminar con las vistas de visualización creamos la vista cursos, en la ruta “resources/views/cursos” creamos el archivo ver.blade.php y escribimos el siguiente código con la diferencia que tomaremos encuestas las relaciones que existe con las demás tablas.
<x-layout> <h2>Ver Curso</h2> <br> <label>Materia: {{ $curso->materia }}</label><br> <label>Nivel: {{ $curso->nivel }}</label><br> <label>Horas Academicas: {{ $curso->horas_academicas }}</label><br> <label>Profesor: {{ $curso->profesor->nombre_apellido }}</label><br> <label>Alumnos:</label> <ul> @foreach($curso->alumnos as $alumno) <li>{{ $alumno->nombre_apellido }}</li><br> @endforeach </ul> </x-layout>
Desde el navegador Chrome realizamos las pruebas correspondientes de las funcionalidad implementada. CRUD en laravel ver registros.
Operaciones CRUD en Laravel Eliminar
En muchas ocasiones surge la necesidad de eliminar datos, ya sea por errores al guardar información o simplemente porque ciertos datos ya no son útiles. Ahora exploraremos cómo eliminar un registro de nuestra base de datos.
Ahora, utilizaremos las operaciones del CRUD para eliminar la información de un registro específico de la base de datos. Utilizaremos el método “destroy” de los controladores.
Método destroy para la funcionalidad de Profesores
En el método “destroy” del controlador “ProfesorController”, utilizamos el método “findOrFail($id)” proporcionado por Eloquent. Este método recupera un registro específico de la tabla “profesores” con un identificador “$id”. Lo primero será hacer una condicional si el profesor tiene algún curso asignado, si es así retorna un mensaje de error a la vista ver con el mensaje de que el profesor puede ser eliminado porque tiene cursos asignados. En caso que el profesor no tenga cursos asignados poder eliminar el profesor de la base de datos con método “delete”.
if(Curso::where('profesor_id', '=', $id)->first() != null){ return redirect()->back()->withErrors(['mensaje' => 'El profesor no puede ser eliminado.']); } else{ $profesor = Profesor::findOrFail($id); $profesor->delete(); return redirect()->action([ProfesorController::class, 'index']); }
Método destroy para la funcionalidad de Alumnos
Realizamos el mismo procedimiento ahora con el controlador “AlumnoController”, en el método “destroy” realizamos lo siguiente.
if(DB::table('alumno_curso')->where('alumno_id', '=', $id)->first() != null){ return redirect()->back()->withErrors(['mensaje' => 'El alumno no puede ser eliminado.']); } else{ $alumno = Alumno::findOrFail($id); $alumno->delete(); return redirect()->action([AlumnoController::class, 'index']); }
Método destroy para la funcionalidad de Curso
En el caso del controlador “CursoController”, en el método “destroy” no necesitamos hacer los controles si un curso tiene asignado un profesor y alumnos quienes estén tomando el curso, si no que al momento de eliminar el curso eliminamos las relaciones que existen entres estos.
$curso = Curso::findOrFail($id); $curso->alumnos()->detach(); $curso->delete(); return redirect()->action([CursoController::class, 'index']);
Crear las rutas Laravel (route)
Continuando, ahora vamos a definir las rutas de Laravel para el método “destroy” correspondientes a las funcionalidades de Profesor, Alumno y Curso dentro del archivo web.php. Para realizar estas solicitudes a los métodos de nuestros controladores, emplearemos las función “delete” de HTTP.
Route::delete('/profesores/{id}', [ProfesorController::class, 'destroy'])->name('profesores.destroy'); Route::delete('/alumnos/{id}', [AlumnoController::class, 'destroy'])->name('alumnos.destroy'); Route::delete('/cursos/{id}', [CursoController::class, 'destroy'])->name('cursos.destroy');
Vistas Blade para eliminar registros
Concluimos ahora con la funcionalidad de eliminar, utilizaremos la vista ver creada anteriormente donde iremos añadiendo código que nos permita eliminar un registro seleccionado con algunos controles y validaciones que se tiene que tomar en cuenta.
Las validaciones que tomaremos en cuenta son por ejemplo que un profesor no puede ser eliminado si tiene asignado un curso, un alumno no puede ser eliminado si está inscrito en uno o varios cursos.
Comencemos por añadir código de javascript en el archivo layout.blade.php, que permita desplegar una ventana emergente de confirmación antes de eliminar un registro.
<script> function EliminarRegistro(value){ action = confirm(value) ? true: event.preventDefault() } </script>
Formulario eliminar profesores
En el archivo view.blade.php ubicado en la ruta “resources/views/profesores”, debajo de las etiquetas label, insertamos el código correspondiente a la funcionalidad de eliminar. En primer lugar, agregamos mensajes de error para manejar posibles fallos durante el proceso de eliminación. Luego, incorporamos el botón de eliminación, que inicialmente invoca la función JavaScript mediante el evento “onclick”. Esta función despliega una ventana emergente de confirmación antes de proceder con la eliminación del registro seleccionado.
@if($errors->any()) <p class="error-message">{{$errors->first('mensaje')}}</p> @endif <br> <form action="{{ route('profesores.destroy', $profesor->id) }}" method ="POST" > @csrf {{ method_field('DELETE') }} <input type="submit" value="Eliminar" onclick="return EliminarRegistro('Eliminar Profesor')"> </form>
Formulario eliminar alumnos
Con eliminar alumno realizamos el mismo procedimiento abrimos el archivo view.blade.php de la ruta “resources/views/alumnos” y por debajo de las etiquetas label colocamos el siguiente código.
@if($errors->any()) <p class="error-message">{{$errors->first('mensaje')}}</p> @endif <br> <form action="{{ route('alumnos.destroy', $alumno->id) }}" method ="POST" > @csrf {{ method_field('DELETE') }} <input type="submit" value="Eliminar" onclick="return EliminarRegistro('Eliminar Alumno')"> </form>
Formulario eliminar cursos
Por último, realizamos el mismo proceso para eliminar un curso, abrimos el archivo view.blade.php de la ruta “resources/views/cursos” y por debajo de las etiquetas label colocamos el siguiente código.
@if($errors->any()) <p class="error-message">{{$errors->first('mensaje')}}</p> @endif <br> <form action="{{ route('cursos.destroy', $curso->id) }}" method ="POST" > @csrf {{ method_field('DELETE') }} <input type="submit" value="Eliminar" onclick="return EliminarRegistro('Eliminar Curso')"> </form>
Realizamos las pruebas correspondientes de las funcionalidades implementadas. Recuerda que puedes descargar el código fuente de esta clase y todas las demás clases en el repositorio de GitHub totalmente gratis.
Hasta aquí la clase de hoy CRUD en Laravel Ver y Eliminar registros, en la siguiente clase veremos una funcionalidad de Laravel para optimizar nuestro código Inyección de dependencias en Laravel.
¡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: Traducir mensajes en Laravel al Español - Norvic Software