我有两个表(恰好在两个不同的数据库中)。 “客户”和“域”,客户可以有多个域。
这是我正在使用的代码:
$this->Domain->find('all', array(
'order' => 'domain ASC',
'fields' => array(
'Domain.id',
'Domain.domain',
'Server.name',
'Client.id',
'Client.name'
)
));
当我通过不使用'fields'=>返回所有字段时array()一切正常,只要我询问特定的字段,就说:
SQL错误:1054:未知列 “字段列表”中的“Client.id”
如果我只删除两个客户端列,那么一切也正常(客户端模型是另一个数据库上唯一的模型。
答案 0 :(得分:0)
如果客户端hasMany
域,那么应该像$this->Domain->find('all');
那样调用模型显式传递字段Client.id
将显示错误,因为它不是域表的一部分,使用{启用sql dumping {1}}并查看如何运行查询。
你的模特应该是
debug=2
这应该像这样工作
// in client.php model - having structure - id, name
$hasMany = 'Domain';
// in domain.php model - having structure - id, name, client_id
$belongsTo = 'Client';
答案 1 :(得分:0)
如果您的两张桌子位于不同的数据库中,那么您的生活真的很难。 AFAIK,Cake不支持在两个不同的数据库之间连接两个表(或强制关系)。为什么将客户端表放在单独的数据库中?
如果您无法移动表格,我认为您将不得不在您的域模型中编写一些自定义代码,以便它将使用域的(默认)数据库连接字符串,但将实例化并连接另一个数据库资源到另一个数据库。请参阅http://bakery.cakephp.org/articles/doze/2010/03/12/use-multiple-databases-in-one-app-based-on-requested-url了解如何操作 - 请跳至标题为“动态选择正确的数据库”的部分。
HTH, 特拉维斯