CakePHP с использованием нескольких баз данных для моделей

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

У меня есть несколько таблиц только для чтения, которые я хочу использовать для нескольких установок моей системы. Другие таблицы должны быть за установку. Например, users – это общая таблица, а posts – для каждой установки.

В одной схеме (назовем ее «shared») у нас есть таблица users , а в другой схеме («mycake») есть posts .

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

 class User extends AppModel { var $useDBConfig = 'sharedConnection'; } 

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

 // what it does SELECT * FROM users User INNER JOIN posts Post ... // what I'd like it to do: SELECT * FROM shared.users User INNER JOIN mycake.posts Post ... 

Итак, в принципе, есть ли способ присвоить модель полностью имя таблицы модели и заставить ее использовать ее во всех своих запросах? Установка var $useTable = 'shared.users'; не помогает …

У этого сайта есть способ сделать это, но он немного взломан.

Здесь есть решение.

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