【发布时间】:2009-11-24 05:49:03
【问题描述】:
是否有可能某些模型在一个数据库中而其他模型在另一个数据库中(使用相同的连接)?
我有许多只读表,希望在我的系统的多个安装之间共享。其他表需要按安装进行。例如,假设users 是共享表,posts 是每次安装。
在一个模式(我们称之为“共享”)中,我们有 users 表,而在另一个模式(“mycake”)中是posts。
我已经能够通过创建一个指向共享数据库的新数据库连接来从另一个数据库读取用户模型(尽管两个数据库位于同一主机上并且都可以使用相同的登录详细信息进行访问) .
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'; 没有帮助...
【问题讨论】:
-
这是个好问题。在选择框架时(在 PHP 中),我总是检查框架是否允许这样做。
标签: php mysql cakephp cakephp-model