您好,我对下面的代码有疑问
我正在做ajax,如果数据完全相同,则不会插入记录。但是,如果文本区域中的文本发生更改,它应该更新记录,但会插入新行。
这是我的模型
<?php
class Test extends AppModel {
var $belongsTo = array('table1','table2');
var $validate = array(
'field1' => array(
'rule' => 'duplicateCheck',
'message' => 'Duplicate record'
),
'textbody' => array(
'rule' => 'duplicateCheck',
'message' => 'Duplicate record'
)
);
function duplicateCheck() {
$conditions = array(
'Test.field1' => $this->data['Test']['field1'],
'Test.textbody' => $this->data['Test']['textbody']
);
return !$this->hasAny($conditions);
}
}
?>
这是我的控制器
<?php
function add() {
if(isset($this->data)) {
if($this->Test->save($this->data['Test'])) {
} else {
if(isset($this->Test->validationErrors['field1'])) {
}
}
}
}
?>
不知道如何解决这个问题
谢谢
EDIT
好的,我将其更改为此,但现在它不会更新该字段
var $belongsTo = array('table1','table2');
var $validate = array(
'field1' => array(
'rule' => 'duplicateCheck',
'message' => 'Duplicate record'
),
'userid' => array(
'rule' => 'duplicateCheck',
'message' => 'Duplicate record'
)
);
function duplicateCheck() {
$conditions = array(
'Test.field1' => $this->data['Test']['field1'],
'Test.userid' => $this->data['Test']['userid']
);
return !$this->hasAny($conditions);
}
}
?>
确保将 PK 传递给 $this->Model->save(),否则它将为 PK 字段创建一个新 ID。此外, $this->data 应该发送到保存为 $this->data 并包含模型名称。因此,如果您的型号名称是 Test,请尝试按以下方式发送:
$this->Test->save($this->data)
NOT
$this->Test->save($this->data['Test'])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)