EnterSandman
@EnterSandman
Эникей

Что класть в контроллер, а что в модель?

Всем доброго дня, пытаюсь разбираться в ООП и использую Laravel в качестве MVC-фреймворка и не могу понять как разделить функции - что выполняется в контроллере, а что в модели. Потому имею ряд вопросов.

К примеру у меня есть класс с аттрибутами
id
name
age


в бд у меня соответственно хранятся эти данные.

вопрос первый - как заполнить аттрибуты объекта этими свойствами?
Вижу топорный способ

$model = new MyModel();
$data = $model->findOrFail($id);
$this->name = $data->name;
$this->age = $data->age;

return $this;

Конструировать объект и заполнять аттрибуты в цикле?
Чую что что-то не так.

Дальше, если у меня есть к примеру метод добавляющий к $age единицу - он должен располагаться в контроллере? А если я получаю сразу массив из модели и хочу к каждой выполнить этот метод?

Заранее благодарю за разъяснения и прошу прощения за сумбур.
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 2
@galliard
Ничего их перечисленного в контроллере не делается. Вся бизнес-логика должна располагаться в сервисе. Контроллер только принимает http-запрос, валидирует его, и если он валиден - отправляет данные в сервис.
Ответ написан
@EvgeniiR
https://github.com/EvgeniiR
1. Пройдите этот курс: https://laracasts.com/series/laravel-from-scratch-2017 - бесплатный
2. Читайте документацию по непонятным моментам. Там максимум на неделю если вечерами сидеть. Думаю понимание что куда класть появиться.
3. Если курс понравится, то там есть очень качественный и объёмный - Lets build a forum with laravel and TDD(Сам досматриваю сейчас, создавая всё параллельно самостоятельно), либо много интересных по php/laravel, в т.ч. и по ООП. (Вобще недорогие, но есть и на рутрекере/courcehunters).
Я и сам не гуру конечно, но по своему опыту скажу, что без практики такие штуки не понять : )
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект