0

我开始尝试学习 CakePHP 和 MVC。

我有一个数据库,其中包含很多我试图关联并一直在阅读文档的表。

以下是我拥有的一些表格的解释:

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 制作另一个模型并在那里定义关联?应该很明显,每个客户都有一个风险代码。

4

3 回答 3

0

you need to create the Client, Account and RiskCode models and define up the relationship for both directions between:

Client (hasMany) <---> Account (belongsTo)

Client (hasOne) <---> RiskCode (belongsTo)

于 2013-09-11T14:44:31.150 回答
0

如果客户只有一个风险代码,则将字段“client_id”添加到 risk_codes 表并将其附加到客户:

public $hasOne = array(
        'RiskCode'
    );
于 2013-09-11T14:45:06.147 回答
0

查看http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html

由于关系 client -> risk_code 是“多对一”,我们说“客户属于风险代码”。因此,您必须以两种不同的方式进行设置:

客户模型

public $belongsTo = array(
    'RiskCode' => array(
        'className' => 'RiskCode',
        'foreignKey' => 'risk_code_id'
    )
);

风险代码模型

public $hasMany = array(
    'Client' => array(
        'className' => 'Client',
        'foreignKey' => 'risk_code_id'
    )
);

在建立这些关系时,您可以设置许多其他选项,因此请查看 CookBook 以获取详细信息。:)

于 2013-09-11T14:48:17.233 回答