Может ли модель содержать несколько функций, запрашивающих разные домены? - PullRequest
1 голос
/ 24 июля 2010

У меня есть домен для пользователей, который подключается к моей таблице пользователей, которая включает в себя такую ​​информацию, как имя пользователя, имя и фамилия.

Тогда у меня есть домен для электронной почты, который подключается к таблице электронной почты, потому что у пользователя может быть несколько писем. Таблица электронной почты состоит из fk для связи пользователя с его электронными письмами и другими полями, такими как адрес, статус и т. Д.

Должны ли я иметь разные домены для отдельных таблиц, но объединять функции, которые вызывают домены, в моделях? Или, может быть, вы можете, но это не лучшая практика.

Я новичок в этом MVC, и сейчас у меня болит мозг. Может быть, просто кто-то недостаточно хорошо это объяснил.

1 Ответ

0 голосов
/ 12 августа 2010

Вопрос: когда вы упоминаете наличие «Домена», вы имеете в виду модель User и модель Email? или по шаблону дизайна?

Кроме того, изначально (но зависит от вашего приложения) наличие логики базы данных электронной почты в модели пользователей более логично (для меня), поскольку я не думаю, что вы собираетесь добавлять адреса электронной почты без создания пользователя. То есть модель электронной почты действительно зависит от модели пользователя и, возможно, только от модели пользователя, поэтому, возможно, их следует объединить?

Как бы я это сделал:

  1. Поместите всю логику базы данных в модели, которые, как я полагаю, именно так вы и сделали.

  2. Создайте библиотеку или класс для размещения бизнес-логики приложения, которая касается пользователей. (Например, загрузка изображения или подключение к веб-службе не должны входить в модель, если вы следуете стандарту, согласно которому модели CodeIgniter должны содержать только логику базы данных, поэтому я создаю другой класс для обработки этих случаев)

  3. Теперь, когда вы хотите создать пользователя, вы просто внедряете модели в библиотеку (вы можете сделать это на уровне контроллера) и вызываете свой абстрактный метод create_user()

</p> <pre><code>class Users extends Controller { public function create() { // these could be in the constructor! $this->load->model('users'); $this->load->library('users_logic'); $this->users_logic->set_model($this->users); // and/or: $this->users_logic->set_email_model($this->email_model); if ($this->input->post('name')) { $this->users_logic->create(); } } }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...