У меня есть промежуточное программное обеспечение, которое динамически изменяет конфигурацию базы данных следующим образом:
config(['database.connections.mysql.database'=> 'newDatabaseName']);
И в каждой модели у меня явно установлено $connection = 'mysql'
.
Внутри моего конструктора модели:
logger()->info(get_class($this). ' database: ' . config('database.connections.mysql.database'));
logger()->info(get_class($this). ' database: ' . DB::connection($this->connection)->getDatabaseName());
Вывод:
newDatabaseName
oldDatabaseName
, где newDatabaseName
- база данных, которую я установил в промежуточном программном обеспечении, и oldDatabasename
это имя базы данных .env.
Так что в основном я успешно установил имя базы данных в конфигурации, но модель по-прежнему использует имя базы данных .env по какой-то причине.
Есть идеи, почему это происходит?
У меня есть другие промежуточные программы, применяемые к этим маршрутам:
SubstituteBindings::class,
ChangeLocale::class,
HandleCors::class,
Я думал, что это из-за промежуточного программного обеспечения "SubstituteBinding", но я пытался поставить свое промежуточное ПО до и после него, это не имеет значения.
Я использую laravel 5.6