gpt4 book ai didi

php - CakePHP 中主键以外的字段上的多个数据库关系

转载 作者:搜寻专家 更新时间:2023-10-31 21:46:48 25 4
gpt4 key购买 nike

我有一个项目必须跨越多个数据库。

一个数据库有表:

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,
)
);
}
?>

如果所有三个表都位于“默认”或“otherdb”中,我可以在从设备到 OsesPlatform 的 hasOne 或 belongsTo 关系的“条件”参数中执行此操作,事实上平台和 OsesPlatform 之间的 hasOne 关系工作正常.但是,我需要建模的是设备和平台之间的关系。

最佳答案

事实证明,跨数据库的 HABTM 关系在 Cake 中没有得到正式支持(这来自 #cakephp 上的 markstory)。虽然它有时会起作用,但不清楚(至少对我而言)在什么条件下它会起作用,并且没有计划改进对此的支持。所以我必须用另一种方式来做这件事。

关于php - CakePHP 中主键以外的字段上的多个数据库关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1766975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com