我正在尝试使用具有验证isUnique规则的字段保存数据,但在尝试通过以下方法进行更新时遇到问题。
$this->Model->id = 1;
$this->Model->save($this->data);
如果我在上面执行此操作,则会生成验证错误,说明我只允许具有唯一值,但我正在尝试更新此值。
有没有解决这个问题的方法?
答案 0 :(得分:2)
这对我来说没问题;当手动设置时,Cake将尝试使用主键id
更新记录。
使用所谓的“唯一”数据在您的表格中进行搜索;并查看是否可以找到任何其他结果。在引入isUnique
验证规则之前,您可能会使用重复的数据。
您是否在循环中进行此更新?
您可以尝试将模型中的on
验证规则更改为create
,以防止它在更新时触发;但我不确定这是否必要;再加上你可以update
一条重复信息的记录,打败目的!
var $validate = array(
'fieldName1' => array(
'rule' => 'isUnique',
'required' => true,
'allowEmpty' => false,
'on' => 'create', // here
'last' => false,
'message' => 'Your Error Message'
)
);
答案 1 :(得分:1)
只需将id与数组一起传递即可。像:
$this->create();
$data['id'] = $id;
$this->save($data);