2012-08-12 99 views
2

,这是我的表的hasMany通过加入当用户输入数据到我的形式,它不保存到数据库模式不保存到数据库

Invoice - id, sender_id, receiver_id, template_id 
Field - id, name, description, default_value, template_id 
fields_invoices - id, invoice_id, field_id, entered_value 

这里的结构发票模型

class Invoice extends AppModel var $ name ='Invoice'; var $ hasMany = array( 'FieldsInvoice');

这里是场模型

var $hasMany = array(
    'FieldsInvoice' 
    ); 

和这里是fieldsInvoice模型

<?php 
class FieldsInvoice extends AppModel { 
    public $belongsTo = array(
     'Field' => array(
      'className' => 'Field', 
      'foreignKey' => 'field_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ), 
     'Invoice' => array(
      'className' => 'Invoice', 
      'foreignKey' => 'invoice_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ) 
    ); 
} 

这里是在发票控制器

public function create($id) 
    { 
    $this->set('title_for_layout', 'Create Invoice'); 
    $this->set('stylesheet_used', 'homestyle'); 
    $this->set('image_used', 'eBOXLogoHome.png'); 
    $this->layout='home_layout'; 


    if (!is_numeric($id)) throw new BadMethodCallException('I need an ID'); 
    $this->Invoice->id = $id; 
    if (!$this->Invoice->exists()) throw new NotFoundException('Invalid ID'); 

    $this->set('invoice_id',$id); 

    $names = $this->Invoice->find('list',array(
    'fields'=>array('template_id'), 
    'conditions'=>array('id'=>$id))); 

    $fields = $this->Field->find('all', array(
    'conditions'=>array(
    'template_id'=>$names))); 

    $this->set(compact('fields')); 
    $this->set(compact('invoice_id')); 

    $this->set('name',$names); 
    $this->Invoice->create(); 
    if(empty($this->data)){ 
     $this->data= $this->Field->read($id); 
    } 
    else{ 
     if($this->request->is('post')) 
     { 

      $this->Invoice->create(); 
      if($this->FieldsInvoice->save($this->request->data, array('deep'=>true))); 
      { 
      $this->Session->setFlash('The field has been updated'); 
      $this->redirect(array('controller'=>'invoices', 'action'=>'index')); 

      } 
      //else{ 
      $this->Session->setFlash('Could not be saved'); 
      //} 
     } 
    } 
} 

这里创建功能是用于视图创建功能

<?php echo $this->Form->create('FieldsInvoice'); ?> 
    <?php foreach ($fields as $field): ?> 
    <?php echo $this->Form->hidden('Invoice.id'); ?> 
    <?php echo $this->Form->hidden($field['Field']['id']); ?> 
    <?php echo $this->Form->Input($field['Field']['name'], array('default' =>$field['Field']['default_value'])); ?> 
    <?php endforeach ;?> 
    <?php echo $this->Form->End('Submit');?> 

调试视图时,这是输出端接收

array(
    'Invoice' => array(
     'id' => '' 
    ), 
    'FieldsInvoice' => array(
     (int) 5 => '', 
     'amount' => 'test', 
     (int) 6 => '', 
     'description' => 'test1', 
     (int) 7 => '', 
     'totalacctowing' => 'test2', 
     (int) 8 => '', 
     'pmtinfo' => 'test3' 
    ) 
) 

回答

0

相反的:在你的,如果条件使用以下语法

$this->Invoice->save($this->request->data); 

;

$this->Invoice->save($this->request->data, array('deep' => true)); 

This link将指导您保存相关数据。

+0

我已通过连接模型更改为hasMany。我会更新我的代码,但它不是将field_id和inputs_value保存到fieldsinvoice表 – user1393064 2012-08-12 13:00:32

+0

更新的代码和问题 – user1393064 2012-08-12 13:04:03

0

你试过调试吗?尝试查看您的表单数据并查看所有字段是否正常。使用debug()pr().

+0

是的我已经调试了表单数据,不幸的是它的不正确,我不知道如何解决它。 – user1393064 2012-08-12 13:29:16