@photosho

Какие действия должны содержаться в моделях?

Здравствуйте. Вопрос относительно понимания модели в MVC, а, конкретнее, в Laravel. Допустим, имеем пользователя. Нам необходимо:

1. Обеспечить его регистрацию. Для этого нужно, как минимум, сравнить "username" пользователя со всеми имеющимися в таблице "users" записями - проверить, встречается уже пользователь с таким именем или нет. Как это делается? В классе модели "user" создается метод "getUsersCount(field)", куда передается имя поля, по которому будем искать и который, производя соотвествующий запрос к базе данных, возвращает количество найденных по этому полю записей. Правильное понимание?

2. Обеспечить изменение данных в профиле пользователя. В модели создается метод для сохранения поля или группы полей в базу данных, и вызовом этого метода контроллер сохраняет для конкретного пользователя конкретные поля (допустим, редактируем при помощи Ajax). Правильно это?

3. Обеспечить удаление пользователя. Некий метод, вызывающий удаление строки конкретного пользователя из базы данных. Здесь не все понятно. Если пользователь успел написать комментарии или сообщения на форуме - их тоже, вроде как, нужно удалить. Каким образом это делается? Контроллер должен обращаться сначала к модели "user", удаляя конкретного пользователя, а затем - к моделям комментариев, сообщений, статей - чтобы удалять записи, соответствующие удаленному пользователю?

Я только начал во всем этом разбираться, и мое понимание устройства моделей в системе MVC пока может быть неверным. Я понимаю это так: модель - это не объект, а некоторый интерфейс для взаимодействия с таблицей в базе данных. Получить значение конкретного поля из базы данных можно запросом к определенному методу этого класса с передачей "id" необходимой строки и имени столбца. Только чувствую, что это понимание не совсем верно.

И последний вопрос для этого сообщения. Допустим, у нас есть таблица статей и таблица комментариев. Каждый комментарий имеет столбец "article_id" - идентификатор статьи, которому он принадлежит. Имеется, также, и страница со списком всех статей, и страница отображения полной версии статьи. На странице со списком должны отображаться не только информация о статье, но и количество комментариев к ней (если уж не говорить об имени автора, также, получаемом по его идентификатору).

На странице полной версии статьи еще должны отображаться и комментарии к ней. Видим, что здесь задача выходит далеко за рамки одной модели. Как в этом случае обеспечивается их взаимодействие? Задача собрать общий объект/массив с данными для передачи отображению - относится к контроллеру или должна быть выполнена на уровне модели?
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
Denormalization
@Denormalization
Пункты 1, 2 и 3 уже есть в Laravel (Eloquent) "из коробки".
Все остальное тоже есть.

Читайте документацию, смотрите видео. Ответы на все эти вопросы уже давно есть.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы