Здравствуйте, есть 3 таблицы cabinet, staff, type, которые по сути справочники, содержащие два поля ID, и своё поле, соответственно есть 3 модели и 3 класса проверки request. Если начать писать CRUD для обращения к каждой модели и вывода результатов, то получится огромное дублирование кода, ибо он при одинаковых сущностях получится также одинаковый, вопрос заключается в том как можно избежать дублирование кода? Пока есть идея в использовании константы с разными значениями и все отличия, которые возникнут в процессе написания CRUD можно будет заменить на неё, но не знаю насколько это правильно выглядит.
Глеб Сугак, а как модель поймёт что вызвали именно её, а не соседа? При подходе дублирования, от которого хочу избавиться модель прописана в самом начале кода use App\Models\Имя as Model и при обращении сразу понятно какая нужна
astrocrafter, так в контролере точно также упоминаете модель. У каждой модели есть своя таблица и могут быть свои функции, но каждая будет наследоваться от вашего абстрактного класса, а он уже будет реализовывать функции CRUD без дублирования. Можно внутри CRUD функции сделать проверку на то из какой модели это вызывается и тогда делать что-то другое для определённой модели.
Глеб Сугак, Если сейчас просто передаются данные в нужную модель, то для избежания дублирования надо передавать данные + ссылку на модель по типу Model $modelв общий класс, и этот класс по ссылке найдёт нужную модель и выполнит все действия CRUD с ней, правильно я всё понял?
astrocrafter, извините за задержку, забыл о вашем вопросе. Не совсем так. Вы пишите про отдельный класс, который принимает в качестве параметра класс модели, а я пишу про абстрактный класс, который модель наследуется. В таком случае через модель вызывается функция, которая принадлежит вашему абстрактному классу, понимаете?
Глеб Сугак, Ничего страшного. То есть вызывается модель как вызывалась раньше, но за счёт наследования от абстрактного классе все её методы перейдут и потомкам, правильно ли теперь понял?