【发布时间】:2015-08-24 09:36:11
【问题描述】:
我必须使用无法修改的现有数据库。 我需要用 hasMany 关系(SGRPART hasMany SSGART)链接两个表。
困难在于这些表是用两列连接的,没有一个是主键:
表SGRPART的结构:
IDSGRAPART (int 9)
CGRPART (int 9)
CSOUSGRP (int 9)
DESGRPART (varchar 100)
表SSGART的结构:
IDSSGART (int 9)
CGRPART (int 9)
CSOUSGRP (int 9)
DESGRPART (varchar 100)
关系应该是: SGRPART.CGRPART = SSGART.CGRPART 和 SGRPART.CSOUSGRP = SSGART.CSOUSGRP
我在 SGRPART 模型中尝试过,但它没有从 SSGART 表中返回相关记录:
class SGRPART extends AppModel
{
public $name = 'SGRPART';
public $useTable = 'SGRPART';
public $primaryKey = 'IDSGRPART';
public $displayField = 'DESGRPART';
var $hasMany = array(
'SSGART' => array(
'foreignKey' => false,
'conditions' => array('SSGART.CGRPART' => 'SGRPART .CGRPART','SSGART.CSOUSGRP'=>'SGRPART .CSOUSGRP')
)
);
}
知道在 Cakephp 中是否可行,如果可行,该怎么做?
谢谢, 詹姆斯
【问题讨论】:
-
嗨,小建议为什么您使用 hasmany ? hasone 易于使用
-
我同意,但是对于表 SGRPART 中的每条记录,SSGART 表中的记录不止一条。
-
不用设置foreignKey对吗?
-
好吧,foreignKey 必须设置为 null 否则将在与此处无关的主键上进行关联。
-
我怀疑您将不得不为此使用自定义查找器。我仍在尝试自己解决这个问题。
标签: mysql cakephp foreign-keys has-many