Я часто путаюсь в том, какую модель создавать функции. Позвольте мне попытаться объяснить мою текущую ситуацию на простом вымышленном примере:
у меня есть Log
модель, которая содержит все действия в нашем приложении. Я хочу получить активность для конкретного пользователя. Должен ли я создать getActivity($userId)
функция в User
модель или Log
модель?
Почему не оба?
Конечно, главное — избежать дублирования кода, так как это будет трудно поддерживать — и это уродливое решение.
Модель бревна может содержать метод с именем getActivity()
который выбирает всю активность (или на основе любых аргументов, необходимых для уровней нумерации страниц и / или журнала). Кроме того, для целей самодокументирования создайте метод с именем getUserActivity($userId)
— метод, который, надеюсь, выглядит самоочевидным.
Модель пользователя теперь может содержать метод с именем getActivity()
(опять же, с любыми аргументами, необходимыми для нумерации страниц и / или уровней логирования), что в свою очередь вызывает getUserActivity()
метод в вашем Журнал модель.
Это самый умный выбор?
Что ж, никогда не существует единого решения для какой-либо проблемы, но что мне нравится в этом решении, так это то, что теперь у вас есть возможность разделить логику для каждой из моделей, но при этом все еще иметь видимую и функциональную связь между ними. Во-вторых, вы знаете, что есть возможность связать объекты User для простого отслеживания активности.
Поскольку основной используемой базой данных в вашей функции будет "Log"
один, вы должны поместить его в Log
Модель.