2011-11-22 3 views
1

유효성 검사 isUnique 규칙이 있지만 아래 방법을 통해 업데이트하려고 할 때 문제가있는 필드가있는 데이터를 저장하려고합니다.Cakephp가 유효성 검사를 통해 데이터 저장 중입니다.

$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); 
관련 문제