php无法更新,php – 可以插入HABTM数据但无法更新?

什么行不通

在更新表单上,如果我更改复选框值,这些habtm值不会保存到数据库.

在创建和更新表单中,我使用相同的方法:$this-> Employee-> save($this-> data)应自动处理HABTM数据.

什么有效

我按照this tutorial成功建立了HABTM模型:员工拥有和完成了多种语言(即指明哪个员工说哪种语言).

我可以创建关系:在创建具有创建表单的新员工时,检查员工知道并成功保存到数据库的任何语言:员工转到员工数据库表,语言转换为语言,关系转到employee_language表.

在编辑表单上,我看到我在创建员工时检查了哪些checbox.

我发现(可能)有罪

在评估创建和更新员工时数据库中的数据时,我发现$this->数据变量结构不同.

在创建表单上(检查2种语言):

"$this->data" Array [2]

Employee Array [6]

name_lv John Doe

position_lv Computer administrator

enabled 0

Language Array [1]

Language Array [2]

0 1

1 5

在更新表格(检查其他语言,所以3种语言):

"$this->data" Array [1]

Employee Array [8]

name_lv John Doe

position_lv Computer administrator

Language Array [3]

0 1

1 5

2 4

enabled 0

id 68

请注意,现在可以在$this-> data [“Employee”] [“Language”]下访问语言,就像创建$this-> data [“Language”]时一样

解决方法

如果我做$this-> data [“Language”] = $this-> data [“Employee”] [“Language”];然后值被保存(yay),除了employee_language HABTM表中存在重复的条目(哦不).

那么我切换哪个开关使我的复选框可更新?

更多细节(如果你愿意)

(型号)employee.php

class Employee extends AppModel {

var $name = "Employee";

var $hasAndBelongsToMany = array (

"Language" =>

array(

"className" => "Language",

"conditions" => array(

"Language.enabled" => "1"

)

)

);

...

}

(型号)language.php:

class Language extends AppModel {

var $name = "Language";

...

}

(查看)admin_create.ctp(这是创建表单.此代码段呈现所有可用语言的复选框):

...

echo $form->input('Language',array(

'label' => 'Speaks in languages:',

'type' => 'select',

'multiple' => 'checkbox',

'options' => $languages

)); ?>

...

(查看)admin_update.ctp(我可以看到我在创建员工时检查了哪些语言):

...

echo $form->input('Language',array(

'label' => 'Speaks in languages:',

'type' => 'select',

'multiple' => 'checkbox',

'options' => $languages,

'selected' => $html->value('Employee.Language')

)); ?>

...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值