Documentación en Laravel 12
• Guía completa para instalar y desarrollar un
CRUD en Laravel 12 paso a paso.
Requisitos
• - PHP 8.2+
• - Composer
• - Node.js y npm (para Vite)
• - 7-Zip (opcional, para descomprimir archivos)
• Comprobación:
• php -v
• composer -v
• node -v
• npm -v
Instalación
• Instala Laravel globalmente:
• composer global require laravel/installer
• Crea un nuevo proyecto:
• laravel new crud_app
• O con Composer directamente:
• composer create-project laravel/laravel
crud_app
.env
• Copiar y configurar el archivo .env:
• cp .env.example .env
• php artisan key:generate
• Editar las credenciales de base de datos:
• DB_DATABASE=crud_db
• DB_USERNAME=root
• DB_PASSWORD=
Servidor y Vite
• - Iniciar servidor Laravel:
• php artisan serve
• - Correr Vite:
• npm install
• npm run dev
Migración: productos
• php artisan make:migration
create_productos_table
Código Migración
• Schema::create('productos', function (Blueprint $table) {
• $table->id();
• $table->string('nombre');
• $table->decimal('precio', 8, 2);
• $table->timestamps();
• });
Modelo Producto
• php artisan make:model Producto
• Código:
• protected $fillable = ['nombre', 'precio'];
Controlador Resource
• php artisan make:controller
ProductoController --resource
Código Controlador
• public function index() {
• $productos = Producto::all();
• return view('productos.index', compact( 'productos '));
• }
• public function create() {
• return view('productos.create');
• }
• public function store(Request $request) {
• Producto::create($request->all());
• return redirect()->route('productos.index');
• }
• public function edit($id) {
• $producto = Producto::find($id);
• return view('productos.edit', compact('producto'));
• }
• public function update(Request $request, $id) {
• $producto = Producto::find($id);
• $producto->update($request->all());
• return redirect()->route('productos.index');
• }
• public function destroy($id) {
• Producto::destroy($id);
• return redirect()->route('productos.index');
• }
Rutas
• En routes/web.php:
• Route::resource('productos',
ProductoController::class);
Vistas Blade
• index.blade.php:
• @foreach ($productos as $producto)
• {{ $producto->nombre }} - {{ $producto->precio }}
• @endforeach
• create.blade.php:
• <form method="POST" action="{{ route('productos.store') }}">
• @csrf
• <input name="nombre">
• <input name="precio">
• <button type="submit">Guardar</button>
• </form>
• edit.blade.php:
• <form method="POST" action="{{ route('productos.update', $producto->id) }}">
• @csrf @method('PUT')
• <input name="nombre" value="{{ $producto->nombre }}">
• <input name="precio" value="{{ $producto->precio }}">
• <button type="submit">Actualizar</button>
• </form>
Comandos Artisan
• - php artisan serve
• - php artisan migrate
• - php artisan make:model Producto -m
• - php artisan make:controller
ProductoController --resource
• - php artisan route:list