2011-11-22 122 views
1

我試圖保存具有驗證isUnique規則但嘗試通過下面的方法更新時出現問題的字段的數據。CakePHP使用驗證保存數據isUnique

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

如果我上面做,這會產生驗證錯誤說我只允許有獨特的價值,但我想,而不是更新此。

有沒有辦法解決這個問題?

+0

如果你傳遞數據數組中的id,會發生什麼? – mark

回答

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

只要將id和數組一起傳遞即可。像:

$this->create(); 
$data['id'] = $id; 
$this->save($data);