Оболочка CakePHP: переключение CAKE_ENV на ходу

У меня есть небольшая проблема здесь. Я новичок в cakephp, и теперь мне нужно разработать сценарий оболочки cakephp для сохранения данных в своей базе данных. Проблема в том, что я работаю в среде по умолчанию и мне нужно сохранить данные в другой среде. Я использую этот код для переключения среды:

ConnectionManager::alias($env, 'default');

Это кажется хорошим, так как я получил правильный вывод при попытке получить базу данных.

$this->out($datasource->config()['database']);

И тогда я загружаю свою модель:

$model = $this->Model;

Но это загрузить данные модели из default среда. Мой подход неверен? Или есть другой способ переключения среды на ходу с cakephp?

0

Решение

Это должно работать просто отлично, и быстрый тест показывает, что это работает. Возможно, вам придется показать немного больше контекста, но я думаю, что вы загружаете модель (то, что вы показываете там, не погрузка но доступа) до создания псевдонима соединения, следовательно, модель будет использовать исходное соединение, которое было получено при создании его экземпляра.

Так что либо убедитесь, что вы нагрузка модель впоследствии, соответственно, что вы создаете псевдоним до загрузки модели (то есть когда TableRegistry::get() вызывается), или измените соединение конкретной модели на лету, если это применимо:

$connection = ConnectionManager::get($env);
$model->setConnection($connection); // use connection($connection) in CakePHP < 3.4
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]