2013-02-14 25 views
0

(外鍵接合)從一種形式我有一個表格在CakePHP中如下 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()函數tickets_controller如下

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

問題 的問題是,有兩個表在我的數據庫: 1.tickets 2.Comments(TICKET_ID爲外鍵)

我要門票的數據插入到表tickets和評論數據comments表。據我所知,更名爲Comment.comment將在評論表中插入數據。

但我想補充的門票評語表useridticket_idcreated_by &意見兩者。

請提前

+1

如果我是你,我不會讓隱藏USER_ID字段輸入字段...除非您使用安全組件,否則您正在尋求問題!使用控制器填充它,或者使用模型中的beforeSave來操縱正在保存的數據。 – 2013-02-14 14:49:03

回答

0

我認爲你需要在你擁有的每輸入欄的前明確提出一個型號名稱幫助 感謝。例如:

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

    'label'=>'Attachment')); 

CakePHP會自動在您的評論數據中設置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'); 
相關問題