CakePHP HABTM加入表/额外字段

时间:2011-07-15 18:14:28

标签: cakephp has-and-belongs-to-many

所以我有一个customers表,一个联系人表和一个contacts_customers连接表,它还有一个映射到contact_type表的contact_type_id字段。我使用了来自CakePHP update extra field on HABTM join table的信息来尝试提出解决方案,但它只是部分有效。我将add()中的ContactCustomersController方法更改为

$this->ContactsCustomer->Contact->save($this->data);
$this->ContactsCustomer->create();
if ($this->ContactsCustomer->save($this->data,
   array('validate' => 'first'))) {
       $this->Session->setFlash(__('The contacts customer has been saved', true));
   $this->redirect(array('controller' => 'contacts_customers', 'action' => 'index'));
} else {
   $this->Session->setFlash(__('The contacts customer could not be saved. Please, try again.', true));
}

注意两部分保存;这是因为使用saveAll()模型的ContactsCustomer方法刚出来失败而没有出现问题的迹象(结果页面上SQL日志中显示的所有内容都是{{1}紧接着是BEGIN)。我的假设是,这是由于ROLLBACK表和contacts表之间的外键约束,所以我选择了两部分保存。

无论如何,当前代码中没有报告错误,但最终结果是相应的信息保存在contacts_customers表中,但contacts联接表中没有保存任何内容。根据FireBug日志数据,发布的数据似乎是合适的:

contacts_customers

我在这里做错了什么?非常感谢所提供的任何帮助!

相关模型数据:

contact.php

_method POST
data[Contact][address_1]    asdsad
data[Contact][address_2]    
data[Contact][city] asdasd 
data[Contact][email]    jb@sc.net
data[Contact][fax]  
data[Contact][first_name]   Joe
data[Contact][last_name]    Blow
data[Contact][mobile_phon...    
data[Contact][office_phon...    sdfsdfdf
data[Contact][postal_code...    121212
data[Contact][state]    asdas
data[Contact][title]    
data[ContactsCustomer][ContactType] 
data[ContactsCustomer][ContactType][]   1
data[ContactsCustomer][ContactType][]   2
data[ContactsCustomer][ContactType][]   3
data[ContactsCustomer][Customer]    1

contact_types.php

var $hasMany = array(
    'ContactsCustomer'
);

customer.php

var $hasMany = array(
    'ContactsCustomer'
);

contacts_customer.php

var $hasMany = array(
    'ContactsCustomer'
);

1 个答案:

答案 0 :(得分:0)

还没有测试过,但我相信$ this->数据可能已经被第一次保存修改过了。只需使用额外的变量来保存数据。