Является ли плохая привычка работать с несколькими моделями в одном действии контроллера? Должен ли он всегда быть как один контроллер - один вариант модели?
PHP и MVC, несколько моделей
Ответ 1
Нет, конечно, это не плохая привычка. Когда вы работаете с несколькими таблицами, вам понадобятся различные модели.
Проблема заключается не столько в этом, но в том, что возможности фреймворка обрабатывать расширенные запросы, объединяются и фильтруются на основе этих моделей. Это один из тех ошибок, когда вы "обязаны" придерживаться определенной эстетики в отношении взаимодействия с базой данных, но это зависит, конечно, от какой структуры и от того, насколько вы полагаетесь на магическое поведение.
Не каждый проект - простой блог!:)
edit: Я также должен сказать, что это одна из моих главных проблем с фреймворками MVC в целом. Компромисс между тем, что ваш проект пытается достичь, и то, что позволяет инфраструктура, всегда будет там, где волосы теряются, а поздние ночи вложены.
Ответ 2
Я не мог себе представить, что можно работать только с одной моделью за раз. Эти базы данных называются "реляционными базами данных" по определенной причине. Все таблицы взаимодействуют друг с другом.
Я фактически использовал фреймворк, который позволял загружать только одну модель, которая была связана с этим контроллером. Определенно ужасный опыт, единственными работами, которые работали, были основные действия CRUD.
Ответ 3
Нет, это не плохая практика.
Контроллеры сопоставляются с ресурсами HTTP (ака. URI) больше, чем с вашими моделями данных. Запрос на определенный ресурс (пользователи, продукты,...) часто может потребовать загрузки и/или хранения данных из/в разных местах (таблица БД, файловая система, удаленная веб-служба...), поэтому Контроллер 1:1: сопоставление моделей, вероятно, является скорее исключением, чем правилом. Если ваш сайт действительно прост.
Ответ 4
Как и все остальные, вы можете делать то, что хотите. Я бы предложил посмотреть сайт для используемой структуры и посмотреть, как другие люди ее используют. У них часто есть "Проекты с использованием XXXX Framework".
И, как и комментарий troelskin, 1 таблица не всегда равна одной модели. Некоторые примеры, использующие базовый шаблон активной записи (например, CodeIgniter), как правило, относятся к 1 методу модели 1 таблицы.