【发布时间】:2011-04-26 00:31:17
【问题描述】:
您好,下面的代码有问题 我正在做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'])) {
}
}
}
}
?>
不知道如何解决这个问题 谢谢
编辑
好的,我将其更改为这个,但现在它不会更新该字段
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);
}
} ?>
【问题讨论】:
-
不应该保存($this->data)吗?否则最好先尝试不复杂的ajax,更容易检查sql日志等......
标签: cakephp cakephp-1.3