0

CakePHP でメッセージ システムを作成しており、テーブル メッセージがあります。

id
from_id
to_id
subject
message

to_id はユーザーの FK として設定されているため、ユーザーは多くのメッセージを持つことができますが、ID のみを取得した場合、送信者の名前をエコーするにはどうすればよいですか?

ユーザー モデル:

class User extends AppModel {

public $name = 'User';

public $hasOne = array (
    'UserProfile'=>array(
        'className'=>'UserProfile',
        'foreignKey'=>'id'
    )
);

public $hasMany = array(
    'Message'=>array(
        'className'=>'Message',
        'foreignKey'=>'to_id'
    )
);
}

メッセージ モデル:

class Message extends AppModel {

public $name = 'Message';

public $belongsTo = array (
    'User'=>array(
        'className'=>'User',
        'foreignKey'=>'to_id'
    ),
);
}

メッセージ コントローラ:

public function messages(){

    $user = $this->User->find(  'first', array('conditions' => array(
        'User.id' => $this->Session->read('Auth.User.id'))));
    $this->set('user', $user);


    if($this->request->is('post')) {
        $this->requert->data['Message']['from_id'] = $this->Auth->user('id');
        debug($this->request->data);
    }
}

これは、ユーザーに関するすべての情報を配列 Message を含む配列に格納する必要がありますが、この場合、次のように arrat Message を取得します。

id => 1
from_id => 10
to_id => 7
subject => 'subject'
message => 'body'

では、このIDから送信者の名前を抽出するにはどうすればよいですか?

助けてください?

4

1 に答える 1

1

この場合、classNames にエイリアスを使用する必要があります。

class Message extends AppModel {
    public $belongsTo = array(
        'Sender' => array(
            'className' => 'User',
            'foreignKey' => 'from_id'
        ),
        'Receiver' => array(
            'className' => 'User',
            'foreignKey' => 'to_id'
        )
    );
}

class User extends AppModel {
    public $hasMany = array(
        'SentMessages' => array(
            'className' => 'Message',
            'foreignKey' => 'from_id'
        ),
        'Messages' => array(
            'className' => 'Message',
            'foreignKey' => 'to_id'
        )
    );
}
于 2013-03-26T08:05:21.183 に答える