Cómo Crear un CRUD en Laravel 12: Guía Completa para Principiantes
Para programar un CRUD debemos crear un controlador con los métodos necesarios para gestionar los datos de una Tabla implementado las vistas y rutas.
INDICE
- 1. ¿Qué es un CRUD y por qué Laravel 12?
- 2. Paso 1: Prepara tu casita para mascotas (instalación)
- 3. Paso 2: Crea el modelo de las mascotas
- 4. Paso 3: Configura el modelo
- 5. Paso 4: Crea el controlador
- 6. Paso 5: Define las rutas
- 7. Paso 6: Construye el CRUD en el controlador
- 8. Paso 7: Crea las vistas
- 9. Paso 8: ¡Prueba tu refugio virtual!
- Descargar fuente código
Comencemos tu primera aplicación web! Esta guía paso a paso está diseñada para principiantes en Laravel que desean dominar el concepto esencial de un CRUD (Crear, Leer, Actualizar y Eliminar).
Usaremos Laravel 12, el framework PHP más moderno, para construir un sistema de gestión de mascotas simple pero funcional.
Lo que aprenderás en este tutorial:
-
Configuración Inicial: Cómo instalar Laravel 12 y preparar la base de datos para el proyecto.
-
Modelos y Migraciones: Crearemos el Modelo Eloquent
Pety su respectiva migración para definir la estructura de la tabla de mascotas (nombre, tipo, etc.). -
Rutas y Controladores: Implementaremos las rutas RESTful y un Controlador (
PetController) para manejar las cuatro operaciones CRUD: -
Vistas Blade: Diseñaremos las interfaces de usuario (vistas) utilizando el motor de plantillas Blade de Laravel.
No te preocupes si eres nuevo en PHP o en desarrollo web. Te explicaremos cada comando de la línea de comandos Artisan y cada concepto de Eloquent ORM con claridad.
¡Prepárate para construir tu primera aplicación CRUD en Laravel 12!
¿Qué es un CRUD y por qué Laravel 12?
¿Qué es un CRUD y por qué Laravel 12?
Un CRUD (Crear, Reer, Actualizar, Detener) es la espina dorsal de la mayoría de las aplicaciones web. Es el sistema fundamental para organizar y manipular datos de forma eficiente, como un cuaderno digital interactivo.
Vamos a implementar un CRUD práctico para gestionar un registro de mascotas. Podrás:
-
Crear (C): Añadir nuevos registros de mascotas (nombre, tipo, raza, edad, etc.).
-
Leer (R): Visualizar y consultar toda la lista de mascotas.
-
Actualizar (U): Modificar los datos existentes de una mascota.
-
Eliminar (D): Borrar un registro permanentemente.
Utilizaremos Laravel 12, la última versión del framework PHP más popular. Laravel 12 destaca por su sintaxis elegante y sus "herramientas mágicas" (como Eloquent ORM y Blade Templates), que simplifican enormemente el desarrollo, permitiéndote construir la funcionalidad CRUD de manera rápida y limpia.
Paso 1: Prepara tu casita para mascotas (instalación)
Paso 1: Prepara tu casita para mascotas (instalación)
Primero, asegúrate de tener:
- PHP 8.2 o superior: Es como la comida básica para Laravel.
- Composer: Una herramienta para instalar cosas (composer --version para verificar).
- Laravel 12: Crea un proyecto nuevo con:
bash
composer create-project laravel/laravel mis-mascotas
Entra al proyecto:
cd mis-mascotas
Configura tu base de datos en .env. Para algo simple, usa SQLite:
-
Crea un archivo database.sqlite en la carpeta database.
- Edita .env:
text
DB_CONNECTION=sqlite DB_DATABASE=/ruta/absoluta/a/tu/proyecto/database/database.sqlite
📁 Estructura esencial del proyecto Laravel
project/
├── app/
│ └── Http/
│ └── Controllers/
│ └── PetController.php
│
├── resources/
│ └── views/
│ └── pets/
│ ├── index.blade.php // lista de mascotas
│ ├── create.blade.php // formulario de creación
│ ├── edit.blade.php // formulario de edición
│ └── show.blade.php // opcional
│
├── routes/
│ └── web.php // contiene Route::resource('pets', PetController::class)
│
├── database/
│ ├── migrations/
│ │ └── 2024_xx_xx_create_pets_table.php
│ └── seeders/
│ └── PetSeeder.php (opcional)
│
├── public/
│ └── index.php // punto de entrada del proyecto
│
├── app/
│ └── Models/
│ └── Pet.php // modelo del recurso
│
├── .env // configuración de base de datos
├── composer.json
└── artisan
Paso 2: Crea el modelo de las mascotas
Vamos a hacer un modelo Pet para nuestras mascotas:
bash
php artisan make:model Pet -m
Esto genera:
- Un modelo en app/Models/Pet.php.
- Una migración en database/migrations.
Abre la migración y define los datos de las mascotas:
php
public function up() {
Schema::create('pets', function (Blueprint $table) {
$table->id(); // ID único
$table->string('name'); // Nombre de la mascota
$table->string('type'); // Tipo: perro, gato, etc.
$table->timestamps(); // Fechas de creación y actualización
});
}
Ejecuta la migración:
bash
php artisan migrate
¡Listo! Ahora tienes una tabla pets en tu base de datos.
Paso 3: Configura el modelo
En app/Models/Pet.php, indica qué campos puede llenar:
php
class Pet extends Model {
protected $fillable = ['name', 'type'];
}
Paso 4: Crea el controlador
Genera un controlador con recursos:
bash
php artisan make:controller PetController --resource
se usa en Laravel para generar un controlador tipo “resource controller”.
¿Qué hace exactamente el comando?
-
Crea un archivo de controlador llamado
PetController.php -
Lo coloca en
app/Http/Controllers/ -
Incluye automáticamente todos los métodos CRUD que Laravel usa para manejar un recurso.
¿Qué es “--resource”?
La opción --resource le indica a Laravel:
"Genera un controlador con todos los métodos básicos para un recurso REST."
Es decir, crea un controlador con métodos como:
index()create()store()show()edit()update()destroy()
Sin esa opción, el controlador estaría vacío.
Resumen
| Componente | Función |
|---|---|
php artisan |
Ejecuta comandos de Laravel |
make:controller |
Crea un controlador |
PetController |
Nombre del controlador |
--resource |
Genera los métodos CRUD automáticamente |
Paso 5: Define las rutas
Paso 5: Define las rutas
En routes/web.php, añade:
php
Route::resource('pets', PetController::class);
Esto conecta URLs como /pets o /pets/{id} a las funciones del controlador.
crea automáticamente todas las rutas necesarias para un CRUD completo usando un controlador de recursos.
¿Qué significa?
Laravel toma la palabra 'pets' como el nombre del recurso y PetController como el controlador encargado de manejarlo.
Con una sola línea, Laravel genera 7 rutas distintas, cada una conectada a un método del controlador.
Rutas que genera
| Método HTTP | URL | Acción | Método del controlador |
|---|---|---|---|
| GET | /pets | Mostrar lista | index() |
| GET | /pets/create | Formulario para crear | create() |
| POST | /pets | Guardar nuevo | store() |
| GET | /pets/{id} | Mostrar un registro | show() |
| GET | /pets/{id}/edit | Formulario para editar | edit() |
| PUT/PATCH | /pets/{id} | Actualizar | update() |
| DELETE | /pets/{id} | Eliminar | destroy() |
¿Qué gana uno al usar Route::resource()?
- Ahorras escribir ruta por ruta.
- Mantienes un orden estándar REST.
- Laravel conecta automáticamente cada URL con su método correspondiente del PetController.
Finalmente deducimos que esta línea:
Route::resource('pets', PetController::class);
👉 Le dice a Laravel: “Crea todas las rutas necesarias para que PetController maneje el CRUD de pets.”
Paso 6: Construye el CRUD en el controlador
Paso 6: Construye el CRUD en el controlador
Abre app/Http/Controllers/PetController.php y programa cada parte del CRUD:
Leer (Read) - Ver todas las mascotas
php
public function index() {
$pets = Pet::all(); // Obtiene todas las mascotas
return view('pets.index', compact('pets')); // Muestra la vista
}
Esto lista todas las mascotas en una página.
Crear (Create) - Añadir una mascota
- Mostrar formulario:
php
public function create() {
return view('pets.create'); // Vista con formulario
}
- Guardar la mascota:
php
public function store(Request $request) {
Pet::create($request->all()); // Crea la mascota con los datos del formulario
return redirect()->route('pets.index')->with('success', '¡Mascota añadida!');
}
Actualizar (Update) - Editar una mascota
- Mostrar formulario de edición:
php
public function edit($id) {
$pet = Pet::findOrFail($id); // Busca la mascota por ID
return view('pets.edit', compact('pet')); // Muestra el formulario con datos
}
- Guardar cambios:
php
public function update(Request $request, $id) {
$pet = Pet::findOrFail($id); // Encuentra la mascota
$pet->update($request->all()); // Actualiza los datos
return redirect()->route('pets.index')->with('success', '¡Mascota actualizada!');
}
Eliminar (Delete) - Borrar una mascota
php
public function destroy($id) {
$pet = Pet::findOrFail($id); // Encuentra la mascota
$pet->delete(); // La elimina
return redirect()->route('pets.index')->with('success', '¡Mascota eliminada!');
}
Paso 7: Crea las vistas
Paso 7: Crea las vistas
Crea una carpeta resources/views/pets y añade estos archivos:
index.blade.php (Leer - Lista de mascotas)
php
<!DOCTYPE html>
<html>
<head>
<title>Mis Mascotas</title>
</head>
<body>
<h1>Lista de Mascotas</h1>
@if(session('success'))
<p style="color: green;">{{ session('success') }}</p>
@endif
<a href="{{ route('pets.create') }}">Añadir Mascota</a>
<ul>
@foreach($pets as $pet)
<li>
{{ $pet->name }} ({{ $pet->type }})
<a href="{{ route('pets.edit', $pet->id) }}">Editar</a>
<form action="{{ route('pets.destroy', $pet->id) }}" method="POST" style="display:inline;">
@csrf
@method('DELETE')
<button type="submit">Eliminar</button>
</form>
</li>
@endforeach
</ul>
</body>
</html>
create.blade.php (Crear - Formulario nuevo)
php
<!DOCTYPE html>
<html>
<head>
<title>Añadir Mascota</title>
</head>
<body>
<h1>Añadir Nueva Mascota</h1>
<form action="{{ route('pets.store') }}" method="POST">
@csrf
<input type="text" name="name" placeholder="Nombre" required>
<input type="text" name="type" placeholder="Tipo (perro, gato...)" required>
<button type="submit">Guardar</button>
</form>
<a href="{{ route('pets.index') }}">Volver</a>
</body>
</html>
edit.blade.php (Actualizar - Formulario de edición)
php
<!DOCTYPE html>
<html>
<head>
<title>Editar Mascota</title>
</head>
<body>
<h1>Editar {{ $pet->name }}</h1>
<form action="{{ route('pets.update', $pet->id) }}" method="POST">
@csrf
@method('PUT')
<input type="text" name="name" value="{{ $pet->name }}" required>
<input type="text" name="type" value="{{ $pet->type }}" required>
<button type="submit">Actualizar</button>
</form>
<a href="{{ route('pets.index') }}">Volver</a>
</body>
</html>
Paso 8: ¡Prueba tu refugio virtual!
Paso 8: ¡Prueba tu refugio virtual!
Inicia el servidor:
bash
php artisan serve
Ve a http://localhost:8000/pets. Podrás:
- Ver la lista de mascotas (Leer).
- Añadir una mascota nueva como "Luna - Gato" (Crear).
- Editarla para cambiar su tipo a "Perro" (Actualizar).
- Eliminarla si ya no está contigo (Eliminar).
Leido 4707 veces | 3 usuarios
Cómo Crear un CRUD en Laravel 12: Guía Completa para Principiantes
Accede al código fuente esencial de nuestra aplicación en formato ZIP ó TXT. Ideal para desarrolladores que desean personalizar o integrar nuestra solución.
- [ Descargas: 6 ]
Cuestionario de Implementación de un CRUD en Laravel
Amplia tus conocimientos sobre la implementación de un CRUD en Laravel 12
CÓDIGO FUENTE: USD 0.00
Conversar con J.Luis