使用验证保存数据的Cakephp是Unique

时间:2011-11-22 11:54:26

标签: php cakephp

我正在尝试使用具有验证isUnique规则的字段保存数据,但在尝试通过以下方法进行更新时遇到问题。

$this->Model->id = 1; 
$this->Model->save($this->data);

如果我在上面执行此操作,则会生成验证错误,说明我只允许具有唯一值,但我正在尝试更新此值。

有没有解决这个问题的方法?

2 个答案:

答案 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);