Skip to content
Ultima Laravel
  • Pages
    • Introducción
      • Ventajas de utilizar Laravel
      • Entorno de desarrollo
    • Instalación Laravel
      • Composer
      • * Kits de inicio
      • Crear Virtual Host
      • Las mejores extensiones de VS Code para Laravel
      • Cómo instalar proyectos existentes de Laravel
    • Crear una aplicación Laravel
      • Organización Laravel
    • Ejemplo tabla alumnos
      • icon picker
        Resumen ejemplo
      • BD y autenticacion
      • Ejemplo aula_online
      • Ejercicio
      • Entorno y mensajes de error
      • Authentication
    • Base de datos
      • Modelos
        • Polimorfismo
      • Eloquent ORM
      • Migraciones (Estructura de las tablas )
      • Factories
      • Seeders
      • Query Builder. Paginación
      • Ejemplo
    • Enrutamiento
      • Routes
      • Routes y Controller
      • Las respuestas
    • Vistas
      • Vistas en Laravel: blade
        • Vistas
        • Vistas y Rutas en Laravel
      • Plantillas mediante Blade
    • Controladores, middleware y formularios
      • Controladores
      • Middleware o filtros
      • Formularios
    • Validación
    • Sesiones
    • Resumen comandos
      • Artisan
    • Diferencias y Helpers
    • Enlaces interesante

Resumen ejemplo

Instalar Laravel 9 (Instalación rápida)

composer create-project laravel/laravel colegio
Version laravel
php artisan --version
image.png

Configuración BD

.env

image.png

Modelos, migraciones y controladores

Exploremos cada uno de estos conceptos un poco más profundo:
Vamos a crear un modelo, una migración y un controlador de recursos para nuestros alumnos con el siguiente comando:

Crear Migración

le permiten crear y modificar fácilmente las tablas en su base de datos. Aseguran que exista la misma estructura de base de datos en todos los lugares donde se ejecuta su aplicación.
php artisan make:migration create_alumnos_table --create=alumnos
image.png
php artisan migrate

Crear controlador y modelo

proporcionan una interfaz potente y agradable para que interactúes con las tablas de tu base de datos.
son responsables de procesar las solicitudes realizadas a su aplicación y devolver una respuesta.
Casi todas las características que cree implicarán que todas estas piezas funcionen juntas en armonía, por lo que el artisan make:mode comando puede crearlas todas a la vez. (php artisan make:model -mrc Alumno)
php artisan make:controller AlumnoController --resource --model=Alumno
Se crearán los métodos en AlumnoController.php en la carpeta app/http:
1 )index()
2)create()
3)store()
4)show()
5)edit()
6)update()
7)destroy()

app/Http/Controllers/AlumnoController.php

image.png
<?php
namespace App\Http\Controllers;
use App\Models\Alumno;
use Illuminate\Http\Request;

class AlumnoController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$alumnos = Alumno::orderBy('id','desc')->paginate(15);
return view('alumnos.index', compact('alumnos'));
//Sin paginar


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

/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('alumnos.create');
}

/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'nombre_apellido' => 'required|max:75',
'edad' => 'required|integer',
]);
Alumno::create($request->all());
return redirect()->route('alumno.index')
->with('success','Alumno created successfully.');
}


/**
* Display the specified resource.
*
* @param \App\Models\Alumno $alumno
* @return \Illuminate\Http\Response
*/
public function show(Alumno $alumno)
{
return view('alumnos.show',compact('alumno'));
}


/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Alumno $alumno
* @return \Illuminate\Http\Response
*/
public function edit(Alumno $alumno)
{
return view('alumnos.edit',compact('alumno'));
}


/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Alumno $alumno
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Alumno $alumno)
{
$request->validate([
'nombre_apellido' => 'required|max:75',
'edad' => 'required|integer',
]);
$alumno->update($request->all());
return redirect()->route('alumnos.index')
->with('success','Alumno updated successfully');
}


/**
* Remove the specified resource from storage.
*
* @param \App\Models\Alumno $alumno
* @return \Illuminate\Http\Response
*/
public function destroy(Alumno $alumno)
{
$alumno->delete();
return redirect()->route('alumno.index')
->with('success','Alumno deleted successfully');
}
}
app/Models/Alumno.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Alumno extends Model
{
use HasFactory;
protected $fillable =['nombre_apellido', 'edad', 'telefono','direccion'];
}

Agregar Rutas Resource

Aquí, necesitamos agregar una ruta de recursos para la aplicación de productos crudos. así que abra su archivo "routes/web.php" y agregue la siguiente ruta.

routes/web.php

image.png

Ficheros Blade

Tenemos que crear las vistas que necesitamos para nuestro CRUD de alumnos. crearemos la carpeta alumnos
image.png

resources/views/alumnos/layout.blade.php

<!DOCTYPE html>
<html>
<head>
<title>colegio</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
@yield('content')
</div>
</body>
</html>

resources/views/alumnos/index.blade.php

@extends('alumnos.layout')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Alumnos</h2>
</div>
<div class="pull-right">
<a class="btn btn-success" href="{{ route('alumnos.create') }}"> Crear Nuevo Alumno</a>
</div>
</div>
</div>
@if ($message = Session::get('success'))
<div class="alert alert-success">
<p>{{ $message }}</p>
</div>
@endif
<table class="table table-bordered">
<tr>
<th>Nombre y Apellido</th>
<th>Edad</th>
<th>Teléfono</th>
<th>Dirección</th>
<th width="280px">Action</th>
</tr>
@foreach ($alumnos as $alumno)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $alumno->nombre_apellido }}</td>
<td>{{ $alumno->edad }}</td>
<td>{{ $alumno->telefono }}</td>
<td>{{ $alumno->direccion }}</td>
<td>
<form action="{{ route('alumnos.destroy',$alumno->id) }}" method="POST">
<a class="btn btn-info" href="{{ route('alumnos.show',$alumno->id) }}">Show</a>
<a class="btn btn-primary" href="{{ route('alumnos.edit',$alumno->id) }}">Edit</a>
@csrf
@method('DELETE')
<button type="submit" class="btn btn-danger">Delete</button>

</form>
</td>
</tr>
@endforeach

</table>

{!! $alumnos->links() !!}

@endsection
image.png

resources/views/alumnos/crear.blade.php

@extends('layout.layout')
@section('content')
<div class="row">
<div class="col-lg-12 margin-tb">
<div class="pull-left">
<h2>Nuevo Alumno</h2>
</div>
<div class="pull-right">
<a class="btn btn-primary" href="{{ route('alumnos.index') }}"> Volver</a>
</div>
</div>
 
Want to print your doc?
This is not the way.
Try clicking the ··· in the right corner or using a keyboard shortcut (
CtrlP
) instead.