Cómo estructurar correctamente un modelo en MVC con PHP? Problemas con Fat Model y lógica de negocio
¡Hola a todos! Soy un desarrollador PHP principiante y llevo varios meses escribiendo en Laravel. Pero siento que estoy haciendo algo mal con los modelos.
Tengo un proyecto de tienda en línea. Inicialmente, ponía toda la lógica en los modelos Eloquent. Por ejemplo, el modelo Order contiene:
class Order extends Model
{
public function calculateTotalWithDiscount($couponCode) { ... }
public function validateStock() { ... }
public function sendConfirmationEmail() { ... }
public function generateInvoicePdf() { ... }
public function applyLoyaltyPoints($userId) { ... }
public function checkFraud() { ... }
}
Ahora este modelo tiene más de 2000 líneas. Entiendo que esto es un "Fat Model" (modelo gordo), pero no sé cómo dividir correctamente la responsabilidad. En internet hay muchos debates: unos dicen que el modelo solo debe ser para trabajar con la base de datos, otros que toda la lógica de negocio debe estar en el modelo.
Díganme, ¿cómo organizar correctamente?