Operaciones CRUD en Laravel Ver y Eliminar

Operaciones CRUD en Laravel Ver y Eliminar

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

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

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');

Desplegar tu proyecto Laravel a producción

Adquiere la guía en formato PDF

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

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 “Operaciones CRUD en Laravel Ver y Eliminar”

  1. Pingback: Traducir mensajes en Laravel al Español - Norvic Software

Deja un comentario

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