Подтвердить что ты не робот

PHP и MVC, несколько моделей

Является ли плохая привычка работать с несколькими моделями в одном действии контроллера? Должен ли он всегда быть как один контроллер - один вариант модели?

4b9b3361

Ответ 1

Нет, конечно, это не плохая привычка. Когда вы работаете с несколькими таблицами, вам понадобятся различные модели.

Проблема заключается не столько в этом, но в том, что возможности фреймворка обрабатывать расширенные запросы, объединяются и фильтруются на основе этих моделей. Это один из тех ошибок, когда вы "обязаны" придерживаться определенной эстетики в отношении взаимодействия с базой данных, но это зависит, конечно, от какой структуры и от того, насколько вы полагаетесь на магическое поведение.

Не каждый проект - простой блог!:)

edit: Я также должен сказать, что это одна из моих главных проблем с фреймворками MVC в целом. Компромисс между тем, что ваш проект пытается достичь, и то, что позволяет инфраструктура, всегда будет там, где волосы теряются, а поздние ночи вложены.

Ответ 2

Я не мог себе представить, что можно работать только с одной моделью за раз. Эти базы данных называются "реляционными базами данных" по определенной причине. Все таблицы взаимодействуют друг с другом.

Я фактически использовал фреймворк, который позволял загружать только одну модель, которая была связана с этим контроллером. Определенно ужасный опыт, единственными работами, которые работали, были основные действия CRUD.

Ответ 3

Нет, это не плохая практика.

Контроллеры сопоставляются с ресурсами HTTP (ака. URI) больше, чем с вашими моделями данных. Запрос на определенный ресурс (пользователи, продукты,...) часто может потребовать загрузки и/или хранения данных из/в разных местах (таблица БД, файловая система, удаленная веб-служба...), поэтому Контроллер 1:1: сопоставление моделей, вероятно, является скорее исключением, чем правилом. Если ваш сайт действительно прост.

Ответ 4

Как и все остальные, вы можете делать то, что хотите. Я бы предложил посмотреть сайт для используемой структуры и посмотреть, как другие люди ее используют. У них часто есть "Проекты с использованием XXXX Framework".

И, как и комментарий troelskin, 1 таблица не всегда равна одной модели. Некоторые примеры, использующие базовый шаблон активной записи (например, CodeIgniter), как правило, относятся к 1 методу модели 1 таблицы.