2010-02-13 10 views
6

He estado leyendo algunas preguntas previamente formuladas y ¡no he encontrado ninguna que responda mi pregunta en "blanco y negro" para mí! Entonces, disculpas si esto es repetitivo. La pregunta es probablemente similar a preguntar: "¿cuánto tiempo dura un trozo de cuerda? ¡Pero tengan paciencia conmigo!¿Qué tan grueso debe ser el modelo en un marco MVC?

Para un sistema de registro, que tienen un modelo de usuario con funciones tales como:

  • add_user
  • DELETE_USER
  • activate_user

Las anteriores ofertas de modelo de usuario con una tabla. La tabla de usuarios en la base de datos MySQL.

Puede adivinar lo que hace cada función pero, ¿es esto lo suficientemente burdo? Es decir debe mi modelo contener métodos que son mucho más amplias, tales como:

  • add_record
  • delete_record
  • update_record

Cuando yo paso en la mesa y un identificador único del registro para eliminar , agregar o actualizar?

Estoy usando codeigniter, pero estoy interesado en cómo se deben hacer las cosas en un framework MVC puro.

Me disculpo si esta pregunta es demasiado exigente.

Gracias a todos

Respuesta

10

no estoy seguro de lo que entendemos por "grueso".

"debe contener mi modelo de métodos que son mucho más amplias, tales como: add_record, delete_record, update_record"

Por supuesto que no

. Nunca. Eso frustra el propósito de tener un modelo.

Ese tipo de cosas de "propósito general" es para qué sirve una base de datos. El objetivo de un modelo es adaptar la base de datos general a su problema específico.

Su modelo debe ser específico para su problema.

"modelo de usuario con funciones como: add_user, delete_user, activate_user" Ese es el punto. Su modelo refleja su aplicación, su dominio problemático, su solución.

Su modelo debería ser capaz, en efecto, de ser independiente. Debería poder envolver su modelo en una aplicación de línea de comandos o una aplicación GUI o una página web.

+2

+1 Mucha gente parece pensar que todo lo que un modelo debería hacer es CRUD. Esto significa que el controlador debe involucrarse en la lógica comercial de su aplicación. Se llama modelo porque modela su problema: cualquier acción en su dominio de problema necesita un método en el modelo – meouw

+0

@Meouw, gracias por decir eso. Parece que creo que un modelo es una capa de abstracción de base de datos, pero de tus comentarios parece que la lógica de negocios también debería estar allí. Yo malentendí el modelo. Aunque es extraño, ¿por qué uso el controlador para validar la forma si lo hago allí? Las validaciones – Abs

+2

también deben venir en el modelo e informar al controlador si hay un error. – DGM

0

Puede adivinar lo que hace cada función pero es lo suficientemente gruesa.Me refiero a mi modelo debe contener métodos que son mucho más amplias, tales como:

* add_record 
* delete_record 
* update_record 

Cuando yo paso en la mesa y una única identificador del registro para eliminar, añadir o actualizar ?

Si usted tiene una necesidad de obtener sólo la información de un usuario no significa necesariamente que el uso de un registro completo, entonces es justo para que usted tenga *_user funciones, pero es necesario incluirla sólo en su modelo de usuario.

Si necesita obtener un registro completo en lugar de solo el usuario, entonces también es correcto que tenga las funciones *_record, pero colóquelo en su modelo de registro, NO en su modelo de usuario.

Lo que hay que recordar aquí es no incluir todas esas funciones en un solo modelo. En pocas palabras, su usuario es el mismo que un registro.

Cuestiones relacionadas