特定のモデルをあるデータベースに配置し、他のモデルを別のデータベースに配置することは可能ですか (同じ接続を使用して)?
システムの複数のインストール間で共有したい読み取り専用テーブルが多数あります。その他のテーブルは、インストールごとに必要です。例として、usersが共有テーブルであり、postsインストールごとであるとします。
あるスキーマ (「共有」と呼びましょう) にはusersテーブルがあり、別のスキーマ (「mycake」) にはposts.
共有データベースを指す新しいデータベース接続を作成することで、他のデータベースから User モデルを読み取ることができました (ただし、2 つのデータベースは同じホスト上にあり、同じログイン情報で両方にアクセスできます)。
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';が役に立たない...