我开始尝试学习CakePHP和MVC。
我有一个数据库,其中包含很多我想要关联的表,并且一直在阅读the docs。
以下是我所拥有的一些表格的解释:
clients
表,包含字段:
id
name
currency
risk_code_id
(这是risk_codes
表的外键) accounts
表格:
id
client_id
risk_codes
表格:
id
name
我目前只有一个客户模型,如下所示:
<?php
class Client extends AppModel {
public $hasMany = 'Account';
public $validate = array(
'title' => array(
'rule' => 'notEmpty'
),
'body' => array(
'rule' => 'notEmpty'
)
);
}
这将检索与客户有关的帐户。
如何将risk_codes
表与clients
相关联?我是否需要为risk_codes创建另一个模型并在那里定义关联?应该很明显,每个客户都有一个风险代码。
答案 0 :(得分:0)
您需要创建客户端,帐户和RiskCode模型并定义两个方向之间的关系:
客户(hasMany)&lt; ---&gt;帐户(belongsTo)
客户(hasOne)&lt; ---&gt; RiskCode(belongsTo)
答案 1 :(得分:0)
如果客户只有一个风险代码,则将字段“client_id”添加到risk_codes表并将其附加到客户端:
public $hasOne = array(
'RiskCode'
);
答案 2 :(得分:0)
查看http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html。
作为关系客户 - &gt; risk_code是“多对一”,我们说“客户属于风险代码”。因此,您必须以两种不同的方式设置它:
客户端模型
public $belongsTo = array(
'RiskCode' => array(
'className' => 'RiskCode',
'foreignKey' => 'risk_code_id'
)
);
RiskCode模型
public $hasMany = array(
'Client' => array(
'className' => 'Client',
'foreignKey' => 'risk_code_id'
)
);
在建立这些关系时,您可以设置许多其他选项,因此请查看CookBook以获取详细信息。 :)