Помогите с кодовым образцом и образцом модели MVC - PullRequest
2 голосов
/ 25 октября 2010

Я создаю сайт, очень похожий на блог WordPress, в котором на главной странице будет отображаться пост-цикл: с post_summary, информацией об авторе и тегами.

У меня есть четыре таблицы:

posts | users | tags | tag relationships

для отображения всех результатов, для которых мне нужно было бы выполнить несколько JOIN в выражении SELECT

Однако, чтобы остаться с шаблоном MVC, должна быть модель для каждой таблицы (или объекта?). Итак, мой вопрос: если бы я делал SELECT all, как бы я это сделал и продолжал придерживаться шаблона MVC?

Чтобы получить всю необходимую информацию для поста, мне нужен author_id, чтобы получить информацию из таблицы пользователей, И мне нужен post_id для получения тегов (и т. Д.). Если все мои запросы относятся к разным моделям, каков наилучший способ выполнить запрос?

Я делаю одну Модель, которая выполняет все СОЕДИНЕНИЯ, и просто использую ее? Должен ли я загружать модели из вида? Или мне следует выполнить дополнительную работу с запросами в контроллере?

Ответы [ 3 ]

5 голосов
/ 25 октября 2010

Я думаю, что вы неправильно понимаете цель моделей. Модели предназначены для работы с данными в вашей базе данных и не ограничиваются одной таблицей на модель. Если вы создаете блог, вам действительно понадобится одна модель. Взгляните на учебник на сайте codeigniter, http://codeigniter.com/tutorials/watch/blog/, и перечитайте руководство пользователя для моделей, http://codeigniter.com/user_guide/general/models.html. Возможно, вы путаете MVC с ORM

5 голосов
/ 02 ноября 2010

Не делайте модель для соединений. Как уже ответил @Johnny, Модель и таблица не должны иметь отношения один-к-одному. В этом случае вы отображаете записи блога, поэтому у вас может быть Модель с именем «Блог» с методом «GetList ()». Не имеет значения, охватывает ли этот запрос несколько таблиц.

Думайте об этом концептуально. Вы отображаете записи блога, и каждая запись блога имеет другие объекты, связанные с ней (например, идентификатор пользователя). Попытайтесь думать о домене, а не о столе.

0 голосов
/ 25 октября 2010

Сделать модель для СОЕДИНЕНИЙ. Может включать post_summary, недавние_комментарии и т. Д.
Просто используйте его в контроллере front_page, side_bar (для недавних комментариев и т. Д.).

Было бы лучше не размещать запрос непосредственно в представлениях или контроллерах, и представлениям не требуется доступ к моделям IMO.

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