Чем модель отличается от контроллера, и что для чего используется в примерах?

Проходя курс по laravel заметил, что автор прописывает все методы для получения/обработки/введения данных в контроллере, методе остаются только fillable поля и отношения, в статьях часто встречал фразу что работу с бд лучше проводить в модели, собственно вопрос: это я что-то неправильно понимаю или статьи некорректны ? Хотелось бы еще на примерах объяснение ответа
  • Вопрос задан
  • 595 просмотров
Решения вопроса 1
Eridani
@Eridani
Мимо проходил
На примере организации студии.
Есть начальник - контроллер, он раздает задачи, и говорит: -
-"Слыш, Вась (модель), собери нам весь список сотрудников, форматированный по алфавиту и т.п. и занеси мне".
Вася заносит, начальник проводит со списком свои манипуляции и думает, кому из дизайнеров (вьюхи) его отдать, чтобы они подготовили данный список в удобночитаемом и презентабильном виде.
-"Гена, метнись-ка по-быстрому, вот тебе список, оформи его и покажи всем", ну и это будет, собственно, результатом работы модуля.

А в общем, делать ли логику и разбор данных в модели, возвращая уже готовый результат в контроллер, или же получать из модели сухой набор данных из БД для обработки в контроллере - Вам решать.
Лично меня напрягает, когда в модели много писанины, расфасовка данных по результирующим массивам и т.п., этот момент я отдаю в лапы контроллера, а модель только для обращений
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
в моделях вся логика, контроллер служит "переключателем", который работает с моделью. ну или как-то так
Ответ написан
Комментировать
@Yan-s
Просто всё зависит от размера создаваемого приложения.

Если у вас 1 страница то не будет большим криминалом обратиться к модели даже из view.

Если у вас лишь пол дюжины уникальных контроллеров, то нет ничего страшного в том чтобы написать логику прямо в них.

В небольшом приложении вы просто не ощутите проблем такого подхода.

С ростом приложения, когда контроллеров становится больше, если вы будете размещать в них бизнес логику, то сталкиваетесь с тем, что разные контроллеры эту логику частично дублируют и для изменения поведения требуется внести изменения в них всех. Что не просто не удобно, но и повышает риск ошибок.
Ответ написан
Комментировать
@ipokos
что работу с бд лучше проводить в модели

не лучше, а правильно.

это я что-то неправильно понимаю

неясно как ответить

или статьи некорректны

Сложно ответить не зная о каких статьях идет речь. Но могу предположить, что скорее всего в них упрощены некоторые моменты, просто для понимания процесса в целом.

Модель - работает с сущностью БД. Например у вас есть таблица пользователей. Для нее вы создаете модель Customer. Все необходимые операции при выборке или т.п., например JOIN-ы, вы делаете в модели, а в контроллере, вы получаете только доступ к объекту этой модели и дальше с ней работаете
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы