Контроллер не взаимодействует с базой данных directly
как таковой, он вызывает модель, чтобы сделать это вместо этого, в чем смысл того, чтобы иметь контроллер в первую очередь.
Системные вещи, такие как Session, Request, FileUpload и т. Д., Считаются логикой приложения и должны находиться в контроллере. Затем контроллер определяет, как приложение должно взаимодействовать с ними, а не с моделью.
Представьте, что для Session в PHP вы используете $_SESSION
, тогда у вас есть ApiController для мобильного приложения, которое вы создаете, но не можете полагаться на $_SESSION
, так как мобильное приложение обычно не отправляет cookie, модель не должна Не зная или не заботясь о том, как управляется Сеанс, ответственность за поддержание состояния пользователя лежит на Контроллере, и он говорит Моделу, что он должен делать что-то, связанное с Пользователем.
Другой пример: сохранение Post, это not
ответственность модели, чтобы знать, какой пользователь в данный момент вошел в систему, контроллер обязан сообщить Model, какой пользователь вошел в систему, в случае торта, передавая fields => array('user_id', $this->Auth->user('id'))
при вызове $ this-> User-> Save ().
Документация верна, в которой Контроллер ($this->ModelName->doStuff()
) вызывает Модель, чтобы выполнить свою работу, а не "взаимодействовать" напрямую с БД.
Пожалуйста, ознакомьтесь с этими статьями, хотя они и говорят о бизнес-логике и логике приложения, иллюстрация должна помочь вам в этом:)
Логика приложения против Бизнес-логика