0

addticket.ctpに従って、CakePHP にフォームがあります 。

    <html>
<?php
    echo $this->Form->create('Ticket', array('url' => array('controller' => 'tickets', 'action' =>'addtickets'),
        'enctype' => 'multipart/form-data'));
    echo $this->Form->input('title',array('label'=>'Title'));
    echo $this->Form->input('attachment', array('between'=>'<br />','type'=>'file',

        'label'=>'Attachment'));
    echo $this->Form->input('stepstoreproduce',array('label'=>'Steps To Reproduce'));
    echo $this->Form->input('category',array(
        'label'=>'Category',
        'options'=>array(
            'IT Support',
            'IT HelpDesk'
            )));
    echo $this->Form->input('priority',array(
        'label'=>'Priority',
        'options'=>array(
            'Low',
            'Medium',
            'High'
            )));
    echo $this->Form->input('Comment.comment',array(
        'type'=>'textarea',
        'label'=>'Comments'
        ));
    echo $form->input('public',array('type'=>'radio',
    'options' => array(
        '1'=>'Yes',
        '0'=>'No',
    ),
    'default'=>'0'));
    echo $form->input('created_by',array('value'=>$_SESSION['Auth']['User']['id'],'type'=>'hidden'));

    echo $this->Form->end('Submit Ticket');

?>
</html>

そして、次のコードでモデル ticket.php を持っています

var $hasMany = array(
    'Comment' => array(
        'className'     => 'Comment',
        'foreignKey'    => 'ticket_id'
        )
);

そして、私は次のように addticket() 関数を備えた ticket_controller を持っています

 if ($this->Ticket->saveAll($this->data)){
            $this->Session->setFlash('Ticket created');
        } 
        else {
            $this->Session->setFlash('Cannot create a ticket');
        }

問題 問題は、データベースに 2 つのテーブルがあることです: 1.tickets 2.Comments (ticket_id は外部キー)

ticketsチケット データをテーブルに、コメント データをテーブルに挿入したいと考えていcommentsます。Comment.comment名前をに変更すると、コメントテーブルにデータが挿入されることがわかっています。

しかし、コメントテーブルと チケットとコメントの両方に追加useridしたいと思います。ticket_idcreated_by

助けてください 事前に感謝します

4

1 に答える 1

0

モデル名をすべての入力フィールドの前に明示的に配置する必要があると思います。例えば:

echo $this->Form->input('Ticket.title',array('label'=>'Title'));
echo $this->Form->input('Ticket.attachment', array('between'=>'<br />','type'=>'file',

    'label'=>'Attachment'));

CakePHP は Comment データに ticket_id を自動的に設定します。詳細については、 http://book.cakephp.org/2.0/en/models/ Saving-your-data.html#model-saveall-array-data-null-array-options-arrayを参照してください。

そして、次のようなビューの非表示フィールドとして設定するのではなく、コントローラーで user_id を設定する必要があると思います。

$this->data['Ticket']['created_by'] = $this->Auth->user('id');
$this->data['Comment']['created_by'] = $this->Auth->user('id');
于 2013-02-15T02:25:29.527 に答える