@adiletmurzaliev

MVC, модель для каждой таблицы?

Как правильно строить архитектуру моделей MVC приложения, если скажем есть потребность в использовании нескольких таблиц скажем в каком-нибудь классе модели?
Пример:
Есть таблицы: классы и расписание.
Создаю модель Schedule у которой метод getClassSchedule($class_id) должен получить данные из 2х этих таблиц (скажем расписание класса и название класса).
Так вот, правильно ли будет с точки зрения построения кода использовать в модели Schedule обращения к нескольким таблицам?
  • Вопрос задан
  • 3260 просмотров
Пригласить эксперта
Ответы на вопрос 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Создаю модель Schedule у которой метод getClassSchedule($class_id) должен получить данные из 2х этих таблиц


Это не модель, это сервис. Модель это какой-то класс который инкапсулирует данные, это сущность которой оперирует ваша бизнес логика. Если бы мы говорили в контексте языков типа c# или Go - модель это старая добрая структура, просто структура... в PHP есть только классы, потому это у нас это классы.

То есть в вашем случае у вас есть сервисный класс Schedule который инкапсулирует в себя бизнес-логику управления рассписанием для каких-то сущностей. Как оно это делает - не важно.

Что до таблиц и моделей - модели в идеале никак не завязаны на то, как они хранятся в базе. Это просто классы. Их проектируют исходя из того, как проще будет работать с ними в рамках приложения. В базе они могут храниться совсем по другому и задачу хранения должны бать на себя другие сервисы. Скажем у вас может быть несколько моделей, наследующихся от базового класса. Например базовый класс Client делится в итоге на розничных и оптовых покупателей, у каждого свои поля, часть полей общая, часть логики общая, например авторизация.... логично иметь базовый класс и два наследника. В базе это все может храниться в одной таблице, или в нескольких, или еще как....

Если вам интересно - советую почитать про DDD (Domain Driven Design).
Ответ написан
Комментировать
By_Engine
@By_Engine
Я так делаю: написал класс для PDO и обращаюсь в моделях через него к разным таблицам
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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