Проблема с тем, что вы делаете, заключается в том, что всякий раз, когда вы запускаете метод в Eloquent Model, он запускает запрос к объекту Illuminate\Query\Builder
после прохождения через функцию-оболочку Illuminate\Query\Builder
. Объект Query Builder хранит кэш / ссылку на объект соединения, используемый для запроса. Поскольку ваша Модель создается в первую очередь до изменения соединения, объект Query Builder будет использовать старое соединение.
Существует несколько способов решения проблемы, с которой вы столкнулись:
1. Вы можете использовать статическую функцию on
:
Model::on('new_connection')->insert($data);
2. Использовать метод fresh
в вашем случае :
$model = SomeModel();
$model->setConnection('new_connection')->fresh()->insert($data);
Просто обратите внимание, что метод fresh
запускает новый запрос по сравнению с другим параметром, который устанавливает соединение без запуска нового запроса.