¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Registro de comidas
Registro diario de las comidas.
Funcionalidades
- Registro de comidas
- Día
- Tipo (desayuno, comida, cena, picoteo)
- Asociación de comidas a categorías (Postres, Carnes, Pescados, Frutas…)
- Asociación de comidas a etiquetas
- Detalle de comida por ingredientes
Estructura de base de datos
Comidas
- id
- usuario_id (opcional)
- nombre
- descripcion (opcional)
- fecha
- calorias
- tipo (desayuno, comida, cena, tentempié)
- id_categoria (opcional)
- lugar (casa, fuera)
Ingredientes
- id
- nombre
- id_categoria
- calorias_por_100g
Comida_Ingrediente
Tabla que relaciona comidas e ingredientes.
- id_comida
- id_ingrediente
- cantidad (gramos)
Categorías
- id
- nombre
- color?
Etiquetas
- id
- nombre
- slug
Comida_Etiqueta
Tabla que relaciona comidas y etiquetas
- id_comida
- id_tag
Herramientas empleadas
- Framework Laravel (PHP)
Base de datos
Diagrama entidad-relación.
Categorías
Migración para la tabla de las categorías:
php atisan make:migration create_categories_table
Fichero con la migración (database/migrations/2025_03_28_200000_create_categories_table.php):
<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { /** * Run the migrations. */ public function up(): void { Schema::create('categories', function (Blueprint $table) { $table->id(); $table->string('name')->unique(); $table->string('color')->nullable(); $table->timestamps(); }); } /** * Reverse the migrations. */ public function down(): void { Schema::dropIfExists('categories'); } }
Modelo para las categorías (app/Models/Category.php):
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Factories\HasFactory; class Category extends Model { use HasFactory; protected $fillable = ['name', 'color']; public function meals() { return $this->hasMany(Meal::class); } public function ingredients() { return $this->hasMany(Ingredient::class); } }
Controlador
Creamos un controlador asociado al modelo de las categorías:
php artisan make:controller CategoryController -m Category
Se creará el fichero app/Http/Controllers/CategoryController.php con la firma de los 7 métodos:
index()create()store()show()edit()update()destroy()
Vistas
Creamos las vistas para todos los métodos del controlador menos store(), update() y destroy():
php artisan make:view categories.index php artisan make:view categories.create php artisan make:view categories.show php artisan make:view categories.edit
Se habrán creado los siguientes ficheros en el directorio resources/views/categories:
index.blade.phpcreate.blade.phpshow.blade.phpedit.blade.php
Rutas
En el fichero routes/web.php añadimos:
Route::resource('categories', CategoryController::class);
Podemos verificar con el siguiente comando las rutas registradas:
php artisan route:list
