Podczas wdrażania modeli wykorzystujących wzorzec MVC, jak złożone powinny być moje modele?Jak złożone powinny być modele?
Powiedzmy mam kilka stolików tak:
- użytkownika (identyfikator, hasło, stworzony ...)
- e-maile (user_id, e-mail ...)
- adresów (user_id , adres ...)
Posiadam kontroler o nazwie UserController. Sterownik ten powinien pozwolić mi do użytkowników w dzienniku tworzyć użytkowników, itp
<!-- language: php -->
class UserController{
public function create($array){
...
}
public function login($email, $password){
...
}
}
Gdyby moi modele są bardzo prymitywne, implemeting tylko poprzez operacje CRUD ORM? Spowodowałoby to w kodzie jak:
<!-- language: php -->
class UserController{
public function create($array){
$userModel->username = 'blah';
$userModel->blah = 'blah';
$id = $userModel->save();
$emailModel->id = $id;
$emailModel->email = "emailhere";
$emailModel->save();
//Do the same for addresses
}
public function login($email, $password){
...
}
}
lub, alternatywnie, mógłbym modele, które są bardziej skomplikowane:
<!-- language: php -->
UserModel{
public function login($email, $password){
//Do the joining and checking here, then return true or false to the controller
}
}
Wtedy w moim kontrolera:
<!-- language: php -->
userModel->login($mail, $password);
tak, która jest lepszy sposób? Przerzucić całą logikę na modele, czy też mam modele, które wykonują tylko podstawowe operacje CRUD? Na koniec, jak mam sobie radzić z połączeniami tabel? Czy powinny być obsługiwane w modelu, czy w kontrolerze?
Cheers
nie jest użytkownikiem, który musi mieć metodę logowania, ale system lub model auth. Obiekt użytkownika nadal nie istnieje przed zalogowaniem. –
Wystarczy notatkę: Dlaczego masz model e-mail? Czy nie powinno wystarczyć pole e-mail w modelu użytkownika? – Alp
Użytkownicy mogą mieć wiele adresów e-mail powiązanych ze swoim kontem w tej aplikacji. – F21