将不同的列名称关联到一个Model + cakephp

时间:2013-06-21 09:41:58

标签: cakephp cakephp-2.0 cakephp-1.3 cakephp-2.1

如何使用Transaction.who_pay_fee_1,2,3字段获取(UserTransactionType.name)的名称。

'user_transaction_type_id'效果很好,但如何让其他字段起作用:(

//Transaction Model
        public $belongsTo = array(
                'UserTransactionType' => array(
                    'className' => 'UserTransactionType',
                    'foreignKey' => 'user_transaction_type_id',
                    'conditions' => '',
                    'fields' => '',
                    'order' => ''
                ),

//UserTransactionType Model
public $hasMany = array(
        'Transaction' => array(
            'className' => 'Transaction',
            'foreignKey' => 'user_transaction_type_id',
            'dependent' => false,
))

enter image description here

2 个答案:

答案 0 :(得分:0)

这是您的控制器的示例代码:

$this->UserTransactionType->find('all',array(
                                             'fields' => array('name'),
                                             'contain' => array('Transaction')
                                            )
                                 );

如果模型已关联,您可以在'contain'中指定要在结果中获取哪些模型。

如果您只想拥有相关模型的某些字段,则可以在'Transaction' 'contain'之后确定它们,就像在常规find()查询中一样:

'contain' => array('Transaction' => array('fields' => array('field_1',
                                                            'field_2') ))  

但在您的情况下,您不需要指定字段,因为默认情况下您将获得所有字段。

因此,无论您是否定义字段“who_pay_fee_1,2,3”,因为如果您默认使用'contain',您将获得foreing_key - user_transaction_type_id

我希望它有用

答案 1 :(得分:0)

对于喜欢CakePhp的人:) 在控制器中 - >
获取'UserTransactionType'列表 在视图中 - >
循环后通过所有交易;在Transaction Status列中,只需加载'UserTransactionType'array并将数组的数量分配给$ userTransactionTypes。

$userTransactionTypes[$transaction['Who_pay_fee_1']];

说实话,这是直截了当的,但需要集中精力:)