我有一個必須跨越多個數據庫的項目。CakePHP中主鍵以外的字段上的多個數據庫關係
一個數據庫有表:
CREATE TABLE device {
device_uid integer unsigned not null primary key auto_increment,
os varchar(50),
name varchar(50)
}
CREATE TABLE platform {
platform_id integer unsigned not null primary key auto_increment,
name varchar(50)
}
其他數據庫具有表:
CREATE TABLE oses_platforms {
platform_id integer unsigned not null primary key auto_increment,
os varchar(50),
platform_id integer unsigned
}
我創建的表和關係模型:
<?php
class Platform extends AppModel {
var $name = 'Platform';
var $useTable = 'platform';
var $primaryKey = 'platform_id';
var $useDbConfig = 'otherdb';
var $hasOne = array(
'OsesPlatform' => array(
'className' => 'OsesPlatform',
'foreignKey' => 'platform_id'
)
);
}
class Device extends AppModel {
var $name = 'Device';
var $primaryKey = 'device_uid';
var $useDbConfig = 'otherdb';
}
class OsesPlatform extends AppModel {
var $useDbConfig = 'default';
var $name = 'OsesPlatform';
var $primaryKey = 'os';
var $belongsTo = array(
'Platform' => array(
'className' => 'Platform',
'foreignKey' => 'platform_id',
),
);
var $hasMany = array(
'Device' => array(
'className' => 'Device',
'foreignKey' => 'os',
'dependent' => false,
)
);
}
?>
如果所有三個表都駐留在'default'或'otherdb'中,我可以在hasOne或b的'conditions'參數中執行elongs從Device到OsesPlatform的關係,實際上Platform和OsesPlatform之間的hasOne關係工作正常。但是,我需要對設備和平臺之間的關係進行建模。
謝謝,但它不回答我的問題:我怎樣才能在模型中加入?我認爲在這種情況下,我將不得不抱着我的鼻子,並在控制器中執行。 – 2009-11-22 18:32:38