выполнялась, так как в одном из сервис классов в конструкторе было обращение к таблице, которая ещё не создана(как раз создавалась этой миграцией).
Вопрос :
в конструкторах сервисов не принято работать с БД? Зачем artisan migrate создаёт экземпляры всех сервисов?
когда ты запускаешь артисан, ты бутаешь фреймворк, логично что он пройдется по провайдерах и т.д. он создает только то, что ты ему скажешь
теперь это понятно:) Получается, что в конструкторах сервисов вообще к БД лучше не обращаться, потому что создадутся экземпляры всех сервисов при каждом буте фреймворка и выполнятся все их конструкторы! будь их хоть пара тысяч. Думал что конструкторы вызываются лишь при обращении в конкретном методе, или классе, где имплементирован сервис, а не каждый бут фреймворка
не верно по поводу создания экземпляров
в Ларавел без особой необходимости не стоит использовать конструктор: 1) в контроллерах, т.к. при обработке маршрута экземпляр класса контроллера будет создан, а в этот момент могут еще не все посредники сработать и например на момент создания нет еще пользователя, потому все зависимости лучше подтягивать на уровне метода контролера (action) 2) в командах, т.к. для получения информации о имени команды, параметрах, описании нужно создать экземпляр, потому зависимости тянем через метод handle() в момент запуска команды в остальных случаях вполне можно, но я описал только там где я лично обжегся
Обсуждают сегодня