2013-06-21 3 views
0

как получить имя (UserTransactionType.name) с полями Transaction.who_pay_fee_1,2,3.

'user_transaction_type_id' работает хорошо, но как получить остальную часть полей работать :(Связать имя другого столбца с одной моделью + cakephp

//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

ответ

0

Для людей они, как CakePHP :)
в контроллере ->
получить список '' UserTransactionType
в View ->
после цикла корыта всех операций; в столбце Состояние транзакции просто загрузите 'UserTransactionType'array и назначьте количество массивов $ userTransactionTypes.

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

Чтобы быть честным, это было прямо вперед, но нужно немного концентрации :)

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.

Я надеюсь, что это полезно

+0

Спасибо за ваше время и ответ. но он должен быть таким простым, как ниже вопрос :) – Fury