在CakePHP上设置关联

时间:2013-09-11 14:30:35

标签: php mysql cakephp

我开始尝试学习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创建另一个模型并在那里定义关联?应该很明显,每个客户都有一个风险代码。

3 个答案:

答案 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以获取详细信息。 :)