0

ユーザーが他のユーザーにメッセージを送信できるようにするメッセージコントローラーを作成しています。ここに私のデータベース構造があります

ユーザー

id
username
password

メッセージ

id
to_id
from_id
subject
message

to_id と from_id は両方とも users の id 列を参照します。これがメッセージの私のモデルです

メッセージ

<?php
class Message extends AppModel {
    var $name = 'Message';
    var $displayField = 'subject';


    var $validate = array(
        'id' => array(
            'numeric' => array(
                'rule' => array('numeric'),
                //'message' => 'Your custom message here',
                //'allowEmpty' => false,
                //'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
        'to_id' => array(
            'numeric' => array(
                'rule' => array('numeric'),
                //'message' => 'Your custom message here',
                'allowEmpty' => false,
                'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
        'from_id' => array(
            'numeric' => array(
                'rule' => array('numeric'),
                //'message' => 'Your custom message here',
                'allowEmpty' => false,
                'required' => false,
                //'last' => false, // Stop validation after this rule
                //'on' => 'create', // Limit validation to 'create' or 'update' operations
            ),
        ),
            );

        var $belongsTo = array(
                'Sender' => array(
                        'className' => 'User',
                        'foreignKey' => 'to_id'
                        ),
                'Recipient' => array(
                        'className' => 'User',
                        'foreignKey' => 'from_id'
                        )
                );
}

それでは私の見解です

<div class="messages form">
<?php echo $this->Form->create('Message');?>
    <fieldset>
        <legend><?php __('Add Message'); ?></legend>
    <?php
        echo $this->Form->input('to_id');
        echo $this->Form->input('from_id');
        echo $this->Form->input('subject');
        echo $this->Form->input('message');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit', true));?>
</div>
<div class="actions">
    <h3><?php __('Actions'); ?></h3>
    <ul>

        <li><?php echo $this->Html->link(__('List Messages', true), array('action' => 'index'));?></li>
    </ul>
</div>

ドロップダウン ボックスが表示されますが、ユーザーは表示されません。users テーブルに少なくとも 5 人のユーザーがいます

そのようにプレフィックスを追加しても

    echo $this->Form->input('Sender.to_id');
    echo $this->Form->input('Recipient.from_id');

まだ動作しません

4

1 に答える 1

0

マークが述べたように、慣習に従わないとうまくいきません。外部キーの名前を変更します。送信者 => 送信者 ID、受信者 => 受信者 ID

最初にコントローラーでリストを作成する必要があります

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

   $senders = $this->Message->Sender->find('list');
   $recipients = $this->Message->Recipient->find('list');
   $this->set(compact('senders', 'recipients'));

次に、ビューで

echo $this->Form->input('recipient_id');
echo $this->Form->input('sender_id');
于 2011-10-13T14:35:44.473 に答える