2010-02-13 7 views
6

Przeczytałem kilka wcześniej zadanych pytań i nie spotkałem się z żadnym, który odpowie na moje pytanie "czarno-biały" dla mnie! Przepraszam, jeśli to się powtórzy. Pytanie jest prawdopodobnie podobne do pytania "jak długo jest kawałek sznurka", ale pamiętajcie o mnie!Jak gruboziarnisty powinien być model w strukturze MVC?

Dla systemu rejestracji, Mam modelu użytkownika z funkcjami takimi jak:

  • add_user
  • delete_user
  • activate_user

Powyższe oferty model użytkownika z jednej tabeli. Tabela użytkowników w bazie danych MySQL.

Możesz odgadnąć, co robi każda funkcja, ale czy jest wystarczająco szorstka? To znaczy powinno mój model zawierać metody, które są znacznie szersze, takie jak:

  • add_record
  • delete_record
  • update_record

Gdzie mogę przekazać w tabeli i unikalny identyfikator rekordu do usunięcia dodać lub zaktualizować?

Używam codeigniter, ale jestem zainteresowany, jak należy robić rzeczy w czystej strukturze MVC.

Przepraszam, jeśli to pytanie jest zbyt wybredne.

Dzięki wszystkim

Odpowiedz

10

Nie jestem pewien co masz na myśli przez „grubej”.

"powinno mój model zawierać metody, które są znacznie szersze, takie jak: add_record, delete_record, update_record"

nie

Oczywiście. Nigdy. To pokonuje cel posiadania modelu.

Ten rodzaj "ogólnego przeznaczenia" jest tym, do czego służy baza danych. Celem modelu jest dostosowanie ogólnej bazy danych do konkretnego problemu.

Twój model powinien być specyficzny dla twojego problemu.

"model użytkownika z funkcjami takimi jak: add_user, delete_user, activate_user" Właśnie o to chodzi. Twój model odzwierciedla Twoją aplikację, domenę problemu, Twoje rozwiązanie.

Twój model powinien być - w efekcie - samodzielny. Powinieneś być w stanie owinąć swój model w aplikację wiersza poleceń lub aplikację GUI lub stronę internetową.

+2

+1 Wiele osób uważa, że ​​wszystkim, co powinien zrobić model, jest CRUD. Oznacza to, że kontroler musi zaangażować się w logikę biznesową swojej aplikacji. To się nazywa model, ponieważ modeluje twój problem - wszelkie działania w twojej domenie problemowej wymagają metody na modelu – meouw

+0

@Meouw, dziękuję za powiedzenie tego. Wydaje mi się, że model jest warstwą abstrakcji bazy danych, ale z twoich komentarzy wynika, że ​​logika biznesowa też powinna tam być! Źle zrozumiałem ten model. To dziwne jednak, dlaczego używam kontrolera do sprawdzania poprawności formularza, czy powinienem to robić? – Abs

+2

sprawdzania poprawności powinny również pochodzić w modelu, a raport z powrotem do kontrolera jest błąd. – DGM

0

Możesz odgadnąć, co każda funkcja ma , ale jest wystarczająco grubsza.Znaczy powinny mój model zawierać metody, które są znacznie szersze, takie jak:

* add_record 
* delete_record 
* update_record 

Gdzie mogę przekazać w tabeli i unikalnym identyfikatorem rekordu do usunięcia, dodać lub zaktualizować?

Jeśli masz potrzebę, aby uzyskać jedynie informację użytkownik nie musi wykorzystać cały rekord, to jest w sam raz, aby mieć *_user funkcje, ale to go tylko w modelu użytkownika.

Jeśli potrzebujesz uzyskać całe rekordy zamiast tylko użytkownika, to również dobrze jest mieć funkcje *_record, ale umieść je w swoim modelu rekordu - NIE w swoim modelu użytkownika.

Należy pamiętać, aby nie włączać wszystkich tych funkcji tylko w jednym modelu. Po prostu podaj swojego użytkownika i jest taki sam jak rekord.

Powiązane problemy