2-ANALOGÍA DEL RESTAURANTE
¡Excelente pregunta! Te voy a explicar con una analogía de "Restaurante y Meseros" para que sea más fácil recordar.
🏨 ANALOGÍA DEL RESTAURANTE
Modelo = Chef (prepara la comida, trabaja con datos)
Controlador = Mesero (recibe pedidos, coordina entre cliente y chef)
Tabla = Almacén (donde se guardan los ingredientes)
Vista = Menú/Mesa (lo que ve el cliente)
📋 REGLAS COMPLETAS CON ANALOGÍA
1. CONTROLADORES - Los Meseros 🧑💼
// ✅ CORRECTO: MeseroEspecialistaEn [Plural]Controller class UsersController extends Controller // Mesero de Usuarios class ProductsController extends Controller // Mesero de Productos class ProductCategoriesController extends Controller // Mesero de Categorías // ❌ INCORRECTO class UserController // Falta plural class productsController // Minúscula inicial class product_categories_controller // Snake case
Regla del Mesero:
"Soy el Mesero especialista en [Plural]"
UsersController= Mesero de Users (Usuarios)
2. MÉTODOS DE CONTROLADORES - Las Acciones del Mesero 🎯
class UsersController extends Controller { // ✅ CORRECTO: [verbo][Nombre][?] - camelCase public function index() {} // "Mostrar lista de usuarios" public function show($id) {} // "Mostrar usuario específico" public function create() {} // "Mostrar formulario crear" public function store() {} // "Guardar nuevo usuario" public function edit($id) {} // "Mostrar formulario editar" public function update($id) {} // "Actualizar usuario" public function destroy($id) {} // "Eliminar usuario" public function getProfile() {} // "Obtener perfil" public function updateSettings() {} // "Actualizar configuraciones" // ❌ INCORRECTO public function Index() {} // Mayúscula inicial public function get_profile() {} // Snake case public function UpdateUser() {} // PascalCase en método }
Regla de la Acción:
"El mesero [verbo] el [objeto]"
getProfile()= Obtener perfilupdateSettings()= Actualizar configuraciones
3. MODELOS - Los Chefs 👨🍳
// ✅ CORRECTO: ChefEspecialistaEn [Singular] class User extends Model // Chef de User class Product extends Model // Chef de Product class ProductCategory extends Model // Chef de ProductCategory // ❌ INCORRECTO class Users extends Model // Plural class product extends Model // Minúscula class product_category extends Model // Snake case
Regla del Chef:
"Soy el Chef especialista en [Singular]"
User= Chef experto en User (Usuario)
4. TABLAS - Los Almacenes 🏪
class User extends Model { protected $table = 'users'; // ✅ Almacén de users } class ProductCategory extends Model { protected $table = 'product_categories'; // ✅ Almacén de product_categories } // ❌ INCORRECTO protected $table = 'User'; // Singular y mayúscula protected $table = 'productCategories'; // Camel case
Regla del Almacén:(Tablas)
"En el Almacén guardamos muchos [plural snake_case]"
users= Almacén de usuariosproduct_categories= Almacén de categorías de productos
5. RELACIONES - Los Asistentes del Chef 👨🍳🤝👨
class User extends Model { // ✅ CORRECTO: [objetoRelacionado] - camelCase public function posts() {} // "Usuario tiene posts" public function comments() {} // "Usuario tiene comments" public function profile() {} // "Usuario tiene profile" public function productCategories() {} // "Usuario tiene productCategories" // ❌ INCORRECTO public function Posts() {} // Mayúscula public function product_categories() {} // Snake case }
Regla del Asistente:(Modelos-instancias controlador)
"El chef tiene un asistente para [objeto relacionado]"
posts()= Asistente para postsproductCategories()= Asistente para categorías de productos
6. VISTAS - Los Menús/Mesas 📋
// ✅ CORRECTO: [objeto]/[accion].blade.php - snake_case
resources/views/
├── users/
│ ├── index.blade.php // "Lista de usuarios"
│ ├── show.blade.php // "Mostrar usuario"
│ ├── create.blade.php // "Crear usuario"
│ └── edit.blade.php // "Editar usuario"
├── products/
│ └── categories/
│ └── index.blade.php // "Lista de categorías"
└── profile.blade.php // "Perfil"
// ❌ INCORRECTO
resources/views/
├── Users/ // Mayúscula
│ ├── Index.blade.php // Mayúscula
├── productCategories/ // Camel caseRegla del Menú:
"El menú para [objeto]/[acción]"
users/show.blade.php= Menú para mostrar usuario
🎯 RESUMEN MNEMOTÉCNICO
"El Mesero sirve, el Chef cocina"
| Elemento | Analogía | Regla | Ejemplo |
|---|---|---|---|
| Controlador | Mesero | [Plural]Controller | UsersController |
| Método | Acción del Mesero | [verbo][Objeto] | getProfile() |
| Modelo | Chef | [Singular] | User |
| Tabla | Almacén | [plural_snake_case] | users |
| Relación | Asistente | [objetoRelacionado]() | posts() |
| Vista | Menú | [objeto]/[accion].blade.php | users/show.blade.php |
🔁 FLUJO COMPLETO EJEMPLO
// Ruta: El cliente hace un pedido Route::get('/users/{id}', [UsersController::class, 'show']); // Controlador: El mesero recibe el pedido class UsersController extends Controller { public function show($id) // "Mostrar usuario" { // Modelo: El chef prepara los datos $user = User::findOrFail($id); // Chef busca usuario // Vista: Se sirve el plato al cliente return view('users.show', compact('user')); } }
✅ REGLA DE ORO
"Controladores en plural, Modelos en singular, Tablas en plural snake_case"
¿Te ayuda esta analogía para recordar las reglas?
Comentarios
Publicar un comentario