В ларавел, конечно, ни ногой, но
- Middleware - это обработчик запроса, который встраивается в середину. Может докинуть в запрос текущий язык. Может просто собрать статистику. Может вообще прекратить выполнение. Единица выполнения - запрос, допустимые возможности - безграничны.
- Событие - эта такая штука, в момент которой может потребоваться выполнить еще какой-то функционал. Записать в лог регистрацию нового пользователя, отправить письмо всем заинтересованным в комментарии, сбросить кэш. Единица выполнения - произвольная, но более мелкая, чем запрос, допустимые возможности - обработка события не должна прерывать приложение в целом.
В модели допустимы ли методы, которые связаны только с обработкой полученной информации с БД? Или только ORM штучки?
...
Зачем вот нужны эти Repositories-классы? Что в них такого особенного, если есть модели?
По-хорошему модельное сборище классов должно отвечать за всю бизнес-логику и вся обработка и вызовы внешних сервисов должны происходить внутри. Другое дело, что там, похоже, ActiveRecord, в котором это все получится разве что отвратительно, а репозиториев я вообще не нашел. В идеале есть такая система: есть репозиторий, который заведует нахождением и хранением моделейй, а модель - это просто объект, представляющий какую-то сущность. Метод "отправить в бан" меняет у этой модели статус, а за его сохранение отвечает уже репозиторий. Но, повторюсь, мне не хватает документации, чтобы сказать, как это должно быть в laravel.